jQuery更改事件被调用两次

问题描述 投票:30回答:8

我有一个带有一些输入和选择框的表单,每个都有class="myClass"。我还有以下脚本:

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

我不明白为什么在选择框或输入框中的每次更改后,此函数被调用两次。这有什么不对?

感谢您的帮助!

javascript jquery html onchange
8个回答
44
投票

我能想到的是你在表单上使用了同一个类。如果是这样,请从表单标记中删除myClass样式。

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

有双重警报的错误:http://jsfiddle.net/rY6Gq/


21
投票

e.stopImmediatePropagation();是什么对我有用。

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

9
投票

这是一个错误,你要添加

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

在任何变更电话之前


3
投票

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

更新到jQuery 1.7.1对我有用。


3
投票

当您绑定的相同类或任何属性也具有相同名称parent或child时,就会发生这种情况。显然,当你改变孩子时,父母也会改变(孩子改变)。如果它们具有相同的类或属性,则应该触发两次。例如,在下面,如果绑定到“myClass”,它将被调用两次。

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

0
投票

0
投票

在改变检查之前,唯一对我有用的是解除绑定。

 $(".select2Component").unbind(); 
    $(".select2Component").change(function() { 
         //code
    });

-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.