这是对我正在做的事情的嘲笑:
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()(过去有效,但我把它放在页面功能的一边,更改了如何加载页面以节省加载时间的逻辑),使页面转换到下一页但我可以看到列表视图的样式符合我的要求:
$('#display_'+page+'_page').html(data).page();
删除.page()可修复转换错误,但现在页面没有样式。我尝试了listview('refresh')
甚至listview('refresh',true)
,但没有运气。
有关如何让listview刷新的想法吗?
解决方案:
$.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
}
});
答案 0 :(得分:4)
.listview
.listview()
,即刷新功能。如果您的firebug设置正确,您应该看到一条错误消息告诉您。在您发布修补程序之前,我没有时间创建一些代码,但这是我的一点建议:
if(data !== null){ $('#display_'+page+'_page').html(data).find("ul").listview() }
这比新的全局选择器好一点。此外 - 您不需要div,如果您有多个UL,则可以提供详细的选择。
警告:以上代码需要data !== null
。如果它为null - 它将引发错误。
答案 1 :(得分:0)
如果将项目添加到列表视图,则需要在其上调用refresh()方法来更新样式并创建添加的任何嵌套列表。例如:
$( '#MYLIST')列表视图( '刷新');
请注意,refresh()方法仅影响追加到列表的新节点。这是出于性能原因而完成的。刷新过程将忽略已增强的任何列表项。这意味着如果更改已增强的列表项的内容或属性,则不会反映这些内容或属性。如果要更新列表项,请在调用refresh之前将其替换为新标记。
更多信息here。