AJQ内容列表视图(’刷新’)的JQM(jQueryMobile)问题无法正常工作
这是我正在做的嘲笑:
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刷新的任何想法?
解:
$.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 } });
- 一定要在ul元素上调用
.listview
- 如果它没有更早的样式,你只需调用
.listview()
,bot刷新函数。 如果您的firebug设置正确,您应该看到一条错误消息告诉您。
在发布修复程序之前,我没有时间去创建一些代码,但这里有一点推荐:
if(data !== null){ $('#display_'+page+'_page').html(data).find("ul").listview() }
这比新的全局选择器好一点。 此外 – 您不需要div,如果您有多个UL,则可以提供详细的选择器。
注意:上面的代码需要data !== null
。 如果它为null – 它将引发错误。
如果将项添加到列表视图,则需要在其上调用refresh()方法来更新样式并创建添加的任何嵌套列表。 例如:
$( ‘#MYLIST’)的列表视图( ‘刷新’);
请注意,refresh()方法仅影响附加到列表的新节点。 这是出于性能原因而完成的。 刷新过程将忽略已增强的任何列表项。 这意味着如果更改已增强的列表项的内容或属性,则不会反映这些内容或属性。 如果要更新列表项,请在调用refresh之前将其替换为新标记。
更多信息在这里 。