我在JQuery中遇到了一些奇怪的事件绑定问题。我们有很多输入,我们想知道它们的值是否被用户更改了。我将他们的事件附加到这些事件中:
$(document).on("change", ".myClass", changed);
但有时我们必须对这些字段执行自动更改,所以我解除了这些事件的绑定,执行更改并再次绑定事件,以避免在这些更新中触发更改:
$(document).off("change", ".myClass");
$(".myClass").val(whatever);
$(document).on("change", ".myClass", changed);
但是,如果我们在最后一个过程之后单击其中一个输入,即使字段在更新时没有附加任何事件,也会触发change事件。我们知道,在字段失去焦点之前,change事件不会触发,但我们不理解这种行为。
任何帮助或澄清都将受到重视。
提前谢谢。
对不起,我的意思是更改而不是更改()。
发布于 2017-03-06 16:00:51
将第一行从
$(document).on("change", ".myClass", changed());
至
$(document).on("change", ".myClass", changed);
您正在调用方法changed()
并提供来自changed()
方法的返回值。
发布于 2017-03-06 16:01:09
带括号的函数名,如changed()
,会立即调用该函数。这意味着第三个参数实际上是在传递changed
函数的返回值。您应该将该行更改为:
$(document).on("change", ".myClass", changed);
现在,您的changed
函数将仅在事件发生时触发。
https://stackoverflow.com/questions/42630059
复制相似问题