为什么脚本在jquery移动可折叠火灾两次,谢谢先进。
更新:代码显示当点击“btnonce”时只有1个提醒,但是“btntwice”2提醒,只有不同的是“btntwice”javascript下的“div data-role =”可折叠“,为什么要点火两次?
<div data-role="page" id="page">
<div data-role="content">
<script type="text/javascript">
$('#page').live('pageinit', function (event) {
$("#btnonce").click(function() {
alert("Handler for .click() called.");
});
})
</script>
<div data-role="collapsible" data-collapsed="false" id="one">
<script type="text/javascript">
$('#page').live('pageinit', function (event) {
$("#btntwice").click(function() {
alert("Handler for .click() called.");
});
})
</script>
<h3>Test</h3>
<input type="button" id="btntwice" data-icon="check" value="fire twice" ></input>
<input type="button" id="btnonce" data-icon="check" value="fire once" ></input>
</div>
</div>
</div>
答案 0 :(得分:0)
将您的JavaScript更改为:
$('#page').live('pageinit', function (event) {
$("#btnonce").click(function() {
alert("Handler for .click() called.");
});
$("#btntwice").click(function() {
alert("Handler for .click() called.");
});
})
您的click
处理程序已添加两次 - see this example
答案 1 :(得分:0)
看起来jqm可折叠_create函数使用jQuery wrapInner()的方式存在问题。有一个已知的jQuery错误(或者它是一个功能?),domManip逻辑会重新执行要包装的内容中的脚本标记。好时光。
如果您可以将脚本移出可折叠部分,那将是理想的选择。您可能会破解jqm以不为该特定代码行使用wrapInner:
collapsibleContent = collapsible.wrapInner( "<div class='ui-collapsible-content'></div>" ).children( ".ui-collapsible-content" ),
就我个人而言,我将选择一所旧学校“if(yetRan)return; yetRan = true;” - type flag。让我对FORTRAN怀旧。
<强>更新强>
所以我最终在我的jqm安装脚本中使用以下内容(在每个页面和“子”页面上运行):
$(document).on({
pagecreate: function (e) {
$(':jqmData(role=collapsible) script').remove();
}
}, ':jqmData(role=page)');
似乎无害。我总是可以在我的脚本中添加一个类并修改选择器,如果由于某种原因我执行想要两次运行内联脚本。类似的东西:
$(':jqmData(role=collapsible) script:not(.do-not-remove)').remove();