Javascript 有没有一种不太老练的方法来防止我的on(';click';)发射两次?

Javascript 有没有一种不太老练的方法来防止我的on(';click';)发射两次?,javascript,jquery,web,zurb-foundation,Javascript,Jquery,Web,Zurb Foundation,我有一个元素.trigger,显示在页面的顶部和底部。它是.center的子元素,也会出现两次。我的代码很简单: $(document).unbind('click').on('click', '.trigger', function() { alert('success'); }); 这对我来说是一团糟,看起来像是一个黑客。但是,如果我使用: $(document).on('click', '.trigger', function() { alert('success');

我有一个元素
.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
//一些html
废话
//更多的html
废话
//一些html
编辑


第一个代码块<触发器基本上是在使用一个工具名为<代码>数据交换< /COD> < /P> > p>本周早些时候,我搜索了一个方法,通过整个代码> DOM<代码>,并用当前选择的语言替换了字符串<代码>(用于链接目的)

代码是:

var replaced = $("body").html().replace(/_LANG_/g,lang);
$("body").html(replaced);
它取代了主体,但似乎也复制了我所有的
脚本。如果您在SE上搜索用javascript替换字符串的所有实例的方法,上面的代码片段会在结果中出现很多,但是我不建议使用它,因为替换整个
DOM
似乎是个坏主意。


删除该代码后,我的代码停止触发两次。

我不明白问题所在,我只触发了一次?您的代码中可能有一个错误,并且绑定了两次。您能否将该类更改为其他类,只需更改此绑定事件,并在其上方添加一个console.log,以确保其不会触发绑定两次。@a.Wolff这并不能解决问题,最好的方法是编写干净的代码,而不会绑定它两次。或者您正在加载相同的脚本两次,比如在ajax中call@SimonStaton嗯,很有趣。我只是查看了我的页面,并意识到我使用的是一个基础框架工具<代码>数据交换< /代码>,它根据用户的分辨率加载内容。如果我的代码中有一部分(上半部分)是AJAX,这会影响功能吗?另外,如果我查看源代码,则第一个块不在HTML代码中(只是决定加载哪个PHP文件的“数据交换代码”)@HC_uu能否在绑定上方首先添加一个警报,以确保不会调用脚本两次?如果不是这样,那么代码中有两个不同的绑定。