事件在绑定之前执行并在绑定之后触发

时间:2017-03-06 15:58:03

标签: javascript jquery events jquery-events

我在JQuery中遇到了一些奇怪的事件绑定问题。我们有很多输入,我们想知道他们的价值是否被用户改变了。我以这种方式附上他们的活动:

$(document).on("change", ".myClass", changed);

但有时我们必须对这些字段执行自动更改,因此我取消绑定这些事件,执行更改并再次绑定事件,以避免在这些更新中更改触发器:

$(document).off("change", ".myClass");
$(".myClass").val(whatever);
$(document).on("change", ".myClass", changed);

但是,如果我们在最后一个进程之后单击其中一个输入,即使该字段在更新时没有附加任何事件,我们也会触发更改事件。我们知道变化事件在场失去焦点之前不会触发,但我们不会理解这种行为。

任何帮助或澄清都是合理的。

提前致谢。

抱歉,我的意思是改变而不是改变()。

2 个答案:

答案 0 :(得分:1)

更改第一行
$(document).on("change", ".myClass", changed());

$(document).on("change", ".myClass", changed);

您正在调用方法changed()并提供changed()方法的返回值。

答案 1 :(得分:1)

带有changed()括号的函数名称会立即调用该函数。这意味着第三个参数实际上是传递了changed函数的返回值。您应该将该行更改为:

$(document).on("change", ".myClass", changed);

现在您的changed功能只会在事件发生时触发。