jQuery触发两次,事件冒泡?

jQuery触发两次,事件冒泡?,jquery,Jquery,我已经研究了人们在事件冒泡和jQuery触发两次时遇到的所有问题,但我无法解决这个问题。我一次只点击一个DIV,但是点击处理程序触发了两次 HTML 这样做的目的是每次单击显示两个警报,每个警报的计数相同。每次单击时计数都会增加。听起来您的代码执行了两次,两个完整的实例: jQuery(document).ready(function($) { //... }); …正在执行(每个脚本都有自己的count变量),请确保脚本不会在页面中包含两次。要确认这是问题所在,您可以添加一个警报(您现在

我已经研究了人们在事件冒泡和jQuery触发两次时遇到的所有问题,但我无法解决这个问题。我一次只点击一个DIV,但是点击处理程序触发了两次

HTML


这样做的目的是每次单击显示两个警报,每个警报的计数相同。每次单击时计数都会增加。

听起来您的代码执行了两次,两个完整的实例:

jQuery(document).ready(function($) {
  //...
});
…正在执行(每个脚本都有自己的
count
变量),请确保脚本不会在页面中包含两次。要确认这是问题所在,您可以添加一个警报(您现在应该看到两次):


我无法在jsbin上重现该问题:


是否有可能包含了两次jQuery脚本?

您必须将
事件
变量传递到函数中,如下所示:

$('.scroll-content-item').click(function (event) {
在我的测试中效果很好。即使使用类为“滚动内容项”的嵌套div。我会确保您不会多次将侦听器附加到单击处理程序

如果找不到两次调用代码的位置,请在附加侦听器之前添加以下内容:

$('.scroll-content-item').unbind('click');

可能只是一个输入错误,但为了调用
event.stopPropagation()
您必须将
event
作为参数添加到函数:
。单击(函数(事件){…})
我为此代码创建了一个JSFIDLE。除了添加“测试”文本,因为我看不到占位符图像,它在FireFox中运行良好:您使用的是什么浏览器?那些div是在另一个div中,上面有
class=“scroll content item”
吗?+1-忽略了这一点,尽管它不会导致手头的问题(事实上,出错,它应该可以阻止它)。伙计,这很有效!为什么没有这样的记录?或者我只是忽略了它。谢谢聪明人的堆栈溢出。这个网站太棒了。@Ben-好吧,如果你看一下,你会注意到顶部显示的是传递给处理程序的事件对象。这确实是文档中唯一提到的(我同意)奇怪的地方。不客气,我很高兴你让它工作了。哦,从技术上讲,你不是在传递变量,而是在触发事件时传递变量。你只是在你的函数中给它一个名字,以便能够访问它。您可以将其重命名为
e
evt
或任何您想要的名称,但它仍然是。@c0d3Junk13-很好,您可以让它正常工作,但您确实应该找出问题的原因。谁知道还有什么意想不到的行为会由此产生?!尝试在您选择的浏览器中使用开发人员工具,并在警报调用上设置断点。然后,当执行暂停时,检查调用堆栈以查看调用该函数的内容。很棒的调试想法。我这样做了,但它只发出一次警报。所以我猜是别的原因。谢谢你的帮助!好主意,这帮我解决了。我两次被包含在源文件中:)谢谢Nick,已经提到了,但这是一个非常聪明的调试技巧,解决了我的问题!是的,行得通。但这不是最好的解决方案。我一直在使用它作为解决方法。但是,当我在document.ready下放置警报计数时,我也遇到了同样的问题。实际上,它会发出两次警报。这就是我添加jquery的方式:另外,如果我将其中一个jquery插件删除到网站中,它将无法正常作为移动网站运行。哈哈,我不知道问题的作者是谁,但你解决了我的问题!这是一个非常有用的答案,我有同样的问题,我确实有两次包括脚本。
jQuery(document).ready(function($) {
  alert("init");
  //...
});
$('.scroll-content-item').click(function (event) {
jQuery(document).ready(function($) {

        var count = 0;

        // On click, hide the currently displayed post and show the one clicked
        $('.scroll-content-item').click(function(e, ui) {
            e.stopPropagation();
            count += 1;
            alert("count = " + count);
        });

    });
$('.scroll-content-item').unbind('click');
$('.scroll-content-item').unbind('click').bind('click', function(e) {
    alert("clicked");
});