这是我在做什么的模拟:
function loadPage(pn) { $('#'+pn).live('pagecreate',function(event, ui){ $('#'+pn+'-submit').click( function() { $.mobile.changePage({ url: 'page.php?parm=value', type: 'post', data: $('form#'+pn+'_form') },'slide',false,false); loadAjaxPages(pn); }); }); function loadAjaxPages(page) { // this returns the page I want, all is working $.ajax({ url: 'page.php?parm=value', type: 'POST', error : function (){ document.title='error'; }, success: function (data) { $('#display_'+page+'_page').html(data); // removed .page(), causing page to transition, but if I use .page() I can see the desired listview } }); }
在ajax调用返回中,如果我添加了.page()(过去曾用过,但我将其放在页面函数的外面,更改了如何加载页面的逻辑以节省加载时间),则将页面转换为下一页,但我可以看到listview的样式符合我想要的方式:
$('#display_'+page+'_page').html(data).page();
删除.page()可以解决过渡错误,但是现在页面无法设置样式。我尝试过listview('refresh'),甚至listview('refresh',true)没有运气。
listview('refresh')
listview('refresh',true)
关于如何使列表视图刷新的任何想法?
解:
$.ajax({ url: 'page.php?parm=value', type: 'POST', error : function (){ document.title='error'; }, success: function (data) { $('#display_'+page+'_page').html(data); $("div#name ul").listview(); // add div wrapper w/ name attr to use the refresh } });
.listview
.listview()
在发布您的修复程序之前,我没有时间去编写一些代码,但这是我的一些建议:
if(data !== null){ $('#display_'+page+'_page').html(data).find("ul").listview() }
这比新的全局选择器更好。另外-如果您有多个UL,则不需要div,并且可以提供详细的选择器。
注意: 以上代码要求data !== null。如果为空-将引发错误。
data !== null