Fire Jquery以编程方式更改事件.change()vs .trigger('change')

时间:2016-06-09 14:48:22

标签: javascript jquery

在更新值后以编程方式在Jquery中触发更改事件时,您可以执行

$("input").val("A").change();

$("input").val("A").trigger("change");

是否有理由使用其中一个。有没有比其他情况更合适的情况?

3 个答案:

答案 0 :(得分:2)

他们完全相同。 change() - 以及所有其他速记事件方法 - 在内部使用trigger('change')source)。

在这个特定情况下,选择一个而不是另一个的唯一原因是你对语义的偏好。

答案 1 :(得分:1)

在调用change()的情况下,无论如何都会调用trigger('change')。但是使用触发器你可以限制对该事件的命名空间事件处理程序的调用(例如trigger('change.myplugin')),所以我更喜欢每次都坚持使用触发器。

答案 2 :(得分:1)

它们具有相同的功能,但并不完全相同。所以这是change()的源代码:

 function (a,c){
      c==null&&(c=a,a=null);
      return arguments.length>0?this.on(b,null,a,c):this.trigger(b);
 } 

因此change()有一个条件语句,它会调用trigger('change')。因此,触发器(“更改”)的工作速度稍快。