我的页面顶部和底部有一个元素.trigger
。它是.center
的子元素,也会出现两次。我的代码很简单:
$(document).unbind('click').on('click', '.trigger', function() {
alert('success');
});
这对我来说很麻烦,看起来像个黑客。但是,如果我使用:
$(document).on('click', '.trigger', function() {
alert('success');
});
点击时会发射两次,我不明白为什么?任何人都可以解释为什么会发生这种情况,以及如何防止它发生?如果我这样做:
$('.center').on('click', '.trigger', function() {
alert('success');
});
然后它只会在.trigger
的第二个实例上触发(虽然它只会触发一次,正如我所期望的那样)。
有人能解释这三种情况的奇怪行为,并提供解决方案吗?
HTML:
// some html
<div class="center">
<div class="trigger">blah</div>
</div>
// lots of more html
<div class="center">
<div class="trigger">blah</div>
</div>
// some html
修改
.trigger
的第一个块实际上是AJAX,它使用了名为data-interchange
http://foundation.zurb.com/docs/components/interchange.html的基金会中的工具
答案 0 :(得分:0)
本周早些时候,我在整个DOM
中搜索了一个regex方法,并用当前所选语言替换了所有出现的字符串__LANG__
(例如:eng
)(用于链接目的)。
代码是:
var replaced = $("body").html().replace(/_LANG_/g,lang);
$("body").html(replaced);
它取代了正文,但似乎也复制了我的所有script
。如果您在SE上搜索str_replace
使用javascript的所有字符串实例的方法,上面的代码段会在结果中出现很多,但我不建议将其用作替换整个{{1}似乎是个坏主意。
删除该代码后,我的代码停止了两次。