有没有一种不那么黑客的方法可以防止我的 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 上搜索使用 javascript str_replace
字符串的所有实例的方法,上面的代码片段在结果中出现了很多,但我不建议使用它,因为替换整个DOM
似乎是一个坏主意。
删除该代码后,我的代码停止触发两次。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 为什么我的on change事件在ie9上返回空
- 为什么在传递/公开事件发射器时需要包装我的事件发射器的 on 函数
- Heroku 它的调用 JavaScript 代码不在我的 Ruby on Rails 项目中
- 有没有一种不那么黑客的方法可以防止我的 on('click') 触发两次
- Jquery Mobile on() 函数不能替代我的实时函数
- Ruby on Rails - 我的“checkall”复选框功能跳转到数据表上的页面
- 如何将Soundcloud API SDK 3.0 on(finish,handler)方法附加到我的Play函数
- 使用API Key + Secret On Express保护我的RESTful API
- 为什么我的.on()在一次点击中被调用了好几次?
- Bootstrap模式并没有留在我的ruby on rails项目中
- Ruby on Rails:为什么我的delete链接不起作用?
- ruby on rails-如何在HTML网页中包含我的Javascript文件和/或jQuery
- ruby on rails-将我的文件重命名为.js.erb可以在javascript中编写erb,但不能在erb中编写
- (Bootstrap 3.1.1)popover on show重置我的addClass
- 在Angular版本1中,我如何测试我的范围$正在调用on侦听器
- Ruby on Rails得到谷歌分析访问者计数和保存到我的应用程序数据库