我在jQuery Mobile中实现了一个可折叠列表。我正在尝试开发一个简单地设置为true或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>
更新
下面的评论说明我的部分问题来自于我在填充列表时动态设置'collapse'处理程序这一事实。请参阅以下代码:
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>