我正在使用jQuery mobile创建一个应用程序并加载其菜单和页面形成wordpress throw jsonp。 我正在以collapsibleset和listview的形式取消其菜单,但我一直在收到错误。 当我尝试通过此代码刷新collapsibleset时
$(".childnev").html(list);
$.mobile.loading( 'hide');
$('.popupmenu').slideToggle('slow');
$(".childnev").collapsibleset('refresh');
$(".childsublist").listview().listview('refresh');
它给了我这个错误
Error: cannot call methods on collapsibleset prior to initialization;
attempted to call method 'refresh'
当我尝试使用此代码刷新时。
$(".childnev").html(list);
$.mobile.loading( 'hide');
$('.popupmenu').slideToggle('slow');
$(".childnev").collapsibleset();
$(".childnev").collapsibleset('refresh');
$(".childsublist").listview().listview('refresh');
它再次给了我这个错误
TypeError: o[0] is undefined
我错过了什么或做错了什么?
答案 0 :(得分:6)
您需要做的只是添加
<强> Demo 强>
$('[data-role=collapsible-set]').collapsibleset().trigger('create');
这将增强当前页面(活动页面)的[data-role=listview]
和[data-role=collapsible-set]
的标记。您可以将$('[data-role=collapsible-set]')
替换为任何选择器。
根据你comment中的小提琴,你有很多错误。 .ready
不应与jQuery Mobile一起使用。此外,.live
已不再使用,因此请将.live
替换为.on
。
增强方法refresh
,create
,pagecreate
和updatelayout
旨在用于当前页面(活动页面 - {{1} } )重新应用jQuery Mobile风格。对于动态创建且在DOM中创建的页面,不需要使用任何增强方法 - 甚至不需要$.mobile.activePage
或.page()
- 因为页面及其内容在放入DOM后会得到增强。
答案 1 :(得分:1)
由于您正在动态地将可折叠的se附加到类,因此无法刷新它,因为它未创建。你需要创建它。
你必须使用
$(".childnev").html(list).trigger('create');
答案 2 :(得分:1)
可折叠集未初始化。您正在替换html,因此您需要在元素上触发create
。
替换$(".childnev").collapsibleset('refresh');
与
$(".childnev").trigger('create');
仅在动态追加时使用刷新方法,删除元素。
答案 3 :(得分:0)
对于它的价值:我遇到了一个问题,我尝试使用.html()更改现有可折叠div上的内容。无论如何,这都无法正确呈现。但是使用replaceWith()替换那个div(也复制它的'id)然后触发('create')效果很好。