【发布时间】:2017-03-15 23:52:47
【问题描述】:
我在 JQuery 中的事件绑定方面遇到了一些奇怪的问题。我们有很多输入,我们想知道它们的值是否被用户更改。我以这些方式附加他们的事件:
$(document).on("change", ".myClass", changed);
但有时我们必须对这些字段执行自动更改,因此我取消绑定这些事件,执行更改并再次绑定事件,以避免在这些更新中触发更改:
$(document).off("change", ".myClass");
$(".myClass").val(whatever);
$(document).on("change", ".myClass", changed);
但是,如果我们在最后一个过程之后单击其中一个输入,我们会得到更改事件触发,即使该字段在更新时没有附加任何事件。我们知道 change 事件在字段失去焦点之前不会触发,但我们不理解这种行为。
任何帮助或澄清将不胜感激。
提前致谢。
抱歉,我的意思是 changed 而不是 change()。
【问题讨论】:
-
您需要为委托的事件处理程序提供函数的引用,而不是函数的返回值:
$(document).on('change', '.myClass', changed)。另请注意,您的逻辑无论如何都没有实际意义,因为以编程方式更改元素的值不会引发change事件,请参阅:jsfiddle.net/2185v3z5 -
我在你的例子中看到你是对的,但是在我的代码中引发了事件,所以我不得不假设我有一个我没有看到的问题。非常感谢您的帮助。
标签: javascript jquery events jquery-events