我有一个带有一些输入和选择框的表单,每个都有class="myClass"
。我还有以下脚本:
$(document).ready(function() {
$(".myClass").change(function() {
alert('bla');
})
});
我不明白为什么在选择框或输入框中的每次更改后,此函数被调用两次。这有什么不对?
感谢您的帮助!
我能想到的是你在表单上使用了同一个类。如果是这样,请从表单标记中删除myClass样式。
更正:http://jsfiddle.net/rY6Gq/1/
有双重警报的错误:http://jsfiddle.net/rY6Gq/
e.stopImmediatePropagation();是什么对我有用。
$(document).ready(function() {
$(".myClass").change(function(e) {
e.stopImmediatePropagation();
alert('bla');
})
});
这是一个错误,你要添加
$("#some_id").unbind('change');
在任何变更电话之前
如果这发生在IE中,可能是这个错误,因为它对我来说:http://bugs.jquery.com/ticket/6593
更新到jQuery 1.7.1对我有用。
当您绑定的相同类或任何属性也具有相同名称parent或child时,就会发生这种情况。显然,当你改变孩子时,父母也会改变(孩子改变)。如果它们具有相同的类或属性,则应该触发两次。例如,在下面,如果绑定到“myClass”,它将被调用两次。
<div class="myclass">
<select class="myClass"> </select>
</div>
在改变检查之前,唯一对我有用的是解除绑定。
$(".select2Component").unbind();
$(".select2Component").change(function() {
//code
});
尝试调试Firebug中的代码而不是警报。它可能会失去焦点,并且当没有两个发生时返回它会导致两个变化的出现