Javascript 两次调用jQuery更改事件
我有一个带有一些输入框和选择框的表单,每个框都有Javascript 两次调用jQuery更改事件,javascript,jquery,html,onchange,Javascript,Jquery,Html,Onchange,我有一个带有一些输入框和选择框的表单,每个框都有class=“myClass”。我还有以下脚本: $(document).ready(function() { $(".myClass").change(function() { alert('bla'); }) }); 我不明白为什么每次更改选择框或输入框后,这个函数都会被调用两次。 这里怎么了 谢谢你的帮助 不是:尝试在Firebug中调试代码,而不是发出警报。它可能会失去焦点并返回,当没有两个发生时,它会导致
class=“myClass”
。我还有以下脚本:
$(document).ready(function() {
$(".myClass").change(function() {
alert('bla');
})
});
我不明白为什么每次更改选择框或输入框后,这个函数都会被调用两次。
这里怎么了
谢谢你的帮助 不是:尝试在Firebug中调试代码,而不是发出警报。它可能会失去焦点并返回,当没有两个发生时,它会导致出现两个更改我所能想到的是,您在表单本身上使用了相同的类。如果是这样,请从表单标记中删除myClass样式 更正: 带有双重警报的故障:
如果这发生在IE中,可能是这个bug,就像我遇到的一样:
更新到jQuery 1.7.1对我来说很有效。当同一个类或绑定的任何属性也具有相同的名称parent或child时,就会发生这种情况。显然,当您更改一个子项时,父项也会更改(其子项也会更改)。如果它们具有相同的类或属性,则应该触发两次。
$(document).ready(function() {
$(".myClass").change(function(e) {
e.stopImmediatePropagation();
alert('bla');
})
});
例如,在下面的示例中,如果绑定到“myClass”,它将被调用两次
<div class="myclass">
<select class="myClass"> </select>
</div>
这是一个bug,
你会加上
$("#some_id").unbind('change');
在任何更改调用之前e.停止立即复制();这对我来说很有用
$(document).ready(function() {
$(".myClass").change(function(e) {
e.stopImmediatePropagation();
alert('bla');
})
});
唯一对我有效的方法是在更改检查前解开绑定
$(".select2Component").unbind();
$(".select2Component").change(function() {
//code
});
对我来说,我在一个函数中编写了关于更改事件的
。
将其移动到$(document.ready)(函数(){})代码>解决了我的问题。像这样改变
$(document).ready(function() {
$(".myClass").unbind('change');
$(".myClass").change(function() {
alert('bla');
})
});
另外,我知道这件事发生在一位朋友身上,但我不确定他当时使用的浏览器是什么,正如fl00r所指出的,如果能看到更多的代码,那会很有帮助。双函数调用通常是无意中附加处理程序两次的症状。谢谢,Uberstein刚刚向我展示了我的错误。非常感谢。因为这是一个解决办法。在我的例子中,selectpicker生成了一个div,它的类与我最初的select标记上的类相同。如果代码运行了两次,或者文件在页面上包含了两次,则事件将发生两次。@RaisinBranCrunch感谢您的提示。我的问题是该文件包含了两次。