有没有更简单的方法来防止我的 on('click') 触发两次?
Is there a less hack-y way to prevent my on('click') from firing twice?
我有一个元素 .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 在 Foundation 中使用一个名为 data-interchange
http://foundation.zurb.com/docs/components/interchange.html
的工具
本周早些时候,我搜索了一种方法来对整个 DOM
进行正则表达式,并将所有出现的字符串 __LANG__
替换为当前选择的语言(例如:eng
)(用于链接目的)。
密码是:
var replaced = $("body").html().replace(/_LANG_/g,lang);
$("body").html(replaced);
它替换了正文,但似乎也复制了我所有的 script
。如果您在 SE 上搜索 str_replace
一个字符串的所有实例 javascript 的方法,上面的代码片段会在结果中出现很多,但是 我不建议使用它来替换整个 DOM
似乎是个坏主意。
删除该代码后,我的代码停止触发两次。
我有一个元素 .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 在 Foundation 中使用一个名为 data-interchange
http://foundation.zurb.com/docs/components/interchange.html
本周早些时候,我搜索了一种方法来对整个 DOM
进行正则表达式,并将所有出现的字符串 __LANG__
替换为当前选择的语言(例如:eng
)(用于链接目的)。
密码是:
var replaced = $("body").html().replace(/_LANG_/g,lang);
$("body").html(replaced);
它替换了正文,但似乎也复制了我所有的 script
。如果您在 SE 上搜索 str_replace
一个字符串的所有实例 javascript 的方法,上面的代码片段会在结果中出现很多,但是 我不建议使用它来替换整个 DOM
似乎是个坏主意。
删除该代码后,我的代码停止触发两次。