我需要创建一个collapsible-set
。该集合中的每个collapsible
都包含ul-listview
。当我需要将collapsible
项动态添加到collapsbile-set
时,会出现问题。
我收到错误:
Uncaught Error: cannot call methods on listview prior to initialization; attempted to call method 'refresh'
这是这个程序的jsfiddle:
http://jsfiddle.net/ezuo3btc/15/
这是索引页面中的初始html:
<div data-role="collapsible-set" data-content-theme="d" id="set">
<div data-role="collapsible" id="set1" data-collapsed="true">
<h3>Section 1</h3>
<ul data-role="listview">
<li><a href="acura.html">Acura</a></li>
<li><a href="audi.html">Audi</a></li>
<li><a href="bmw.html">BMW</a></li>
</ul>
</div>
</div>
这是在点击事件中调用的,并动态地将collapsible
添加到html中静态定义的collapsible-set
:
$("#add").click(function() {
nextId++;
var content = '\
<div data-role="collapsible" id="set' + nextId + '">\
<h3>Section ' + nextId + '</h3>\
<ul id="listview' + nextId + '" data-role="listview">\
<li><a href="acura.html">Acura</a></li>\
<li><a href="audi.html">Audi</a></li>\
<li><a href="bmw.html">BMW</a></li>\
</ul>\
</div>';
$("#set").append( content ).collapsibleset('refresh');
$("[data-role=listview]").listview("refresh"); <--------- I get the error here.
$("[data-role=listview]").trigger("create");
});
如果有人知道如何在折叠中动态初始化列表视图,请告诉我。
提前致谢。
Jenia。
答案 0 :(得分:2)
您不需要拨打&#34;刷新&#34;方法第一次调用时.listview():
$("[data-role=listview]").listview();
$("[data-role=listview]").trigger("create");
答案 1 :(得分:1)
您需要先使用$element.listview();
初始化listview小部件:
$("[data-role=listview]").listview();
$("[data-role=listview]").listview("refresh"); //optional
一些建议:
$("[data-role=listview]")
适用于data-role=listview
的所有元素,甚至是之前创建的元素。喜欢这样的东西:
var $content = $(content).appendTo($("#set"));
$("#set").collapsibleset('refresh');
$content.find("[data-role=listview]").listview();
$content.find("[data-role=listview]").trigger("create");
$("#set")
始终引用同一节点,您可以将其放在变量
var $set = $("#set");