jQuery更改事件被调用两次

问题描述:

我有一个输入和选择框的表单,每个都有class="myClass"。我也有以下脚本:jQuery更改事件被调用两次

$(document).ready(function() { 
    $(".myClass").change(function() { 
     alert('bla'); 
    }) 
}); 

我不明白为什么在选择框或输入框每次更改后,这个函数被调用两次。 这里有什么问题?

感谢您的帮助!

+2

显示您的wntire表单代码 – fl00r 2011-03-28 20:29:15

+3

正如fl00r所示,这将有助于您查看更多的代码。双重函数调用通常是无意中将您的处理程序连接两次的症状。 – Ender 2011-03-28 20:34:13

+1

谢谢你,Uberstein只是向我展示了我的错误 – Israel 2011-03-28 20:42:43

我只能想到的是,你在窗体本身使用相同的类。如果是这样,请从表单标记中删除myClass样式。

更正: http://jsfiddle.net/rY6Gq/1/

不完善的双重警报: http://jsfiddle.net/rY6Gq/

+2

我敢打赌你的权利+1好电话 – mcgrailm 2011-03-28 20:39:07

+2

哦不,你是如此正确,我很愚蠢:(谢谢你! – Israel 2011-03-28 20:39:41

+1

只是指出我在正确的方向,thx。 – fgysin 2013-01-21 11:00:21

尝试在Firebug调试代码,而不是报警。它可能是失去焦点,并返回它导致出现两个变化时,没有两个发生

+0

加上我知道这发生在一个朋友,但我不知道他在当时使用的是什么浏览器 – 2011-03-28 20:32:41

,如果这发生在IE浏览器,它可能是这个错误,因为这是对我来说: http://bugs.jquery.com/ticket/6593

更新到jQuery的1.7.1为我工作。

它发生在同一个类或任何你绑定的属性也具有相同名称父或子时。显然,当你改变一个孩子的时候,父母也会发生变化(孩子的变化)。如果他们具有相同的类别或属性,则应该触发两次。 例如,如果绑定到“myClass”,那么它将被调用两次。

<div class="myclass"> 
<select class="myClass"> </select> 
</div> 
+0

非常感谢,因为它是一个解决方案。在我的情况下,selectpicker生成一个与我的初始选择标记相同的类 – syler 2016-04-29 07:51:01

它的一个bug, 你会任何改变呼叫

+0

谢谢,它帮助。 – tereru 2016-11-08 15:20:33

e.stopImmediatePropagation前加

$("#some_id").unbind('change'); 

();是什么为我工作。

$(document).ready(function() { 
    $(".myClass").change(function(e) { 
     e.stopImmediatePropagation(); 
     alert('bla'); 
    }) 
});