4

我正在使用 jQuery mobile 创建一个应用程序,并从 wordpress throw jsonp 加载它的菜单和页面。我以 collapsibleset 和 listview 的形式加载它的菜单,但我不断收到错误。当我尝试通过此代码刷新可折叠集时

$(".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

4 回答 4

6

您需要做的就是添加这个

演示

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

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


笔记)

  • 根据您评论中的小提琴,您有很多错误。.ready不应该与 jQuery Mobile 一起使用。此外,.liveis 不再使用,因此,替换.live.on.

  • 增强方法refreshcreate和旨在用于当前页面(pagecreate活动页面 -)以重新应用 jQuery Mobile 样式。对于动态创建并在 DOM 中的页面,不需要使用任何增强方法 - 甚至不需要-因为页面及其内容一旦放入 DOM 中就会得到增强。updatelayout$.mobile.activePage.page()pagecreate

于 2013-06-29T10:47:29.197 回答
1

由于您将可折叠 se 动态附加到该类,因此无法刷新它,因为它没有被创建。你需要创建它。

你必须使用

$(".childnev").html(list).trigger('create');
于 2013-06-29T09:50:33.443 回答
1

可折叠集未初始化。您正在替换 html,因此您需要create在元素上触发。

代替$(".childnev").collapsibleset('refresh');

$(".childnev").trigger('create');

refresh 方法仅在您动态添加、删除元素时使用。

于 2013-06-29T09:50:56.413 回答
0

对于它的价值:我遇到了一个问题,我尝试使用 .html() 更改现有可折叠 div 上的内容。无论如何,这都不会正确渲染。但是使用 replaceWith() 然后 trigger('create') 替换那个 div(也复制它的'id)效果很好。

于 2016-04-10T03:12:11.327 回答