我在 jQuery Mobile 中实现了一个可折叠列表。我正在尝试开发一个变量,该变量根据天气简单地设置为 true 或 false,或者列表中的任何元素都没有展开(换句话说,列表中的每个元素都折叠了,它只会是 false)。我能想到的唯一方法是通过“展开”和折叠事件,但折叠事件在页面加载时为每个列表项触发一次,并且在单击元素时触发多次。以下是我当前的代码。任何人都可以告诉我我做错了什么或建议一种替代方法吗?
JS:
$("#listElement").bind('collapse', $.proxy(function () {
alert("collapse");
}, this)).bind('expand', $.proxy(function () {
alert("expand");
}, this));
html:
<div id='listElement' data-role="collapsible" data-collapsed='true'>
<h3>Header Text</h3>
<p>collaplible content</p>
</div>
更新:
下面的评论说明了我的部分问题来自于我在填充列表时动态设置“折叠”处理程序的事实。请参见下面的代码:
JavaScript:
for (var i = 0; i < 10; i++) {
var element = $("#element").clone();
$("#list").append(makeListElement(element));
}
function makeListElement(element) {
element.find('h3').append("Some Html");
element.bind('collapse', $.proxy(function () {
alert("collapse");
}, this)).bind('expand', $.proxy(function () {
alert("expand");
}, this));
}
}
克隆元素:
<div id='element' data-role="collapsible" data-collapsed='true'>
<h3></h3>
<p></p>
</div>