我在JQuery中遇到了一些奇怪的事件绑定问题。我们有很多输入,我们想知道他们的价值是否被用户改变了。我以这种方式附上他们的活动:
$(document).on("change", ".myClass", changed);
但有时我们必须对这些字段执行自动更改,因此我取消绑定这些事件,执行更改并再次绑定事件,以避免在这些更新中更改触发器:
$(document).off("change", ".myClass");
$(".myClass").val(whatever);
$(document).on("change", ".myClass", changed);
但是,如果我们在最后一个进程之后单击其中一个输入,即使该字段在更新时没有附加任何事件,我们也会触发更改事件。我们知道变化事件在场失去焦点之前不会触发,但我们不会理解这种行为。
任何帮助或澄清都是合理的。
提前致谢。
抱歉,我的意思是改变而不是改变()。
答案 0 :(得分:1)
从
更改第一行$(document).on("change", ".myClass", changed());
到
$(document).on("change", ".myClass", changed);
您正在调用方法changed()
并提供changed()
方法的返回值。
答案 1 :(得分:1)
带有changed()
括号的函数名称会立即调用该函数。这意味着第三个参数实际上是传递了changed
函数的返回值。您应该将该行更改为:
$(document).on("change", ".myClass", changed);
现在您的changed
功能只会在事件发生时触发。