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事件