jQuery mobile无法刷新collapsibleset

时间:2013-06-29 09:42:48

标签: jquery jquery-mobile jquery-mobile-listview jquery-mobile-collapsible

我正在使用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

我错过了什么或做错了什么?

4 个答案:

答案 0 :(得分:6)

您需要做的只是添加

  

<强> Demo

$('[data-role=collapsible-set]').collapsibleset().trigger('create');

这将增强当前页面(活动页面)的[data-role=listview][data-role=collapsible-set]的标记。您可以将$('[data-role=collapsible-set]')替换为任何选择器。


说明(S)

  • 根据你comment中的小提琴,你有很多错误。 .ready不应与jQuery Mobile一起使用。此外,.live已不再使用,因此请将.live替换为.on

  • 增强方法refreshcreatepagecreateupdatelayout旨在用于当前页面(活动页面 - {{1} } )重新应用jQuery Mobile风格。对于动态创建且在DOM中创建的页面,不需要使用任何增强方法 - 甚至不需要$.mobile.activePage.page() - 因为页面及其内容在放入DOM后会得到增强。

    < / LI>

答案 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')效果很好。