triggger()方法与triggerHandler()区别

  在执行默认操作时,使用trigger()方法触发事件后,会执行浏览器的默认操作,例如:

$("input").trigger("focus");

  在上代码中,不仅会触发为<input>元素绑定的focus事件,也会使<input>元素得到焦点(这是浏览器默认操作)。

  如果只是想触发绑定的focus事件,而不像执行浏览器的默认操作,可以使用另一个方法:triggerHandler()方法。

  

$("input").triggerHandler("focus");

  该方法会触发<input>元素绑定的特定事件,同时取消浏览器对此事件默认操作,即文本框只触发绑定的focus事件,不会获得焦点。

  

  与 trigger() 方法相比的不同之处

  • 它不会引起事件(比如表单提交)的默认行为
  • .trigger() 会操作 jQuery 对象匹配的所有元素,而 .triggerHandler() 只影响第一个匹配元素。
  • 由 .triggerHandler() 创建的事件不会在 DOM 树中冒泡;如果目标元素不直接处理它们,则不会发生任何事情。
  • 该方法的返回的是事件处理函数的返回值,而不是具有可链性的 jQuery 对象。此外,如果没有处理程序被触发,则这个方法返回 undefined。

  €-->在项目中,如果需要设置blur事件,如果通过trigger("blur")触发,不仅会触发该元素绑定的事件,还会触发浏览器默认的blur事件(即不能将光标定位到文本框中)。而triggerHandler("blur")则只会触发绑定事件,不会浏览器触发默认的blur事件

 

posted on 2017-03-07 21:03  Cultivate  阅读(184)  评论(0编辑  收藏  举报

导航