触发器在jQuery中触发器与触发器

Dav*_*ads 29 jquery events javascript-events jquery-trigger jquery-triggerhandler

出于好奇 - jQuery的用例/用例是triggerHandler什么?据我所知道的,唯一的"真实"之间的差异trigger,并triggerHandler为本地事件触发与否,和事件冒泡行为(虽然triggerHandler的冒泡的行为似乎并不很难用复制trigger的代码几行) .确保本机事件不会触发有什么好处?

我很好奇这是否是一个便利功能,或者它存在更深层次的原因,以及我何时/什么时候使用它.

Rob*_*ert 67

来自http://api.jquery.com/triggerHandler/上的文档

.triggerHandler()方法的行为与.trigger()类似,但有以下例外:

  • .triggerHandler()方法不会导致事件的默认行为(例如表单提交).

不阻止默认浏览器操作允许您指定应用样式的焦点或选择等等上发生的操作.也许您有一个基于Javascript的动态菜单,因此您不希望纯粹使用CSS应用该样式,否则禁用Javascript的那些将无法理解为什么布局看起来很奇怪.你可以使用类似的东西$('menu1select').triggerHandler('click');

  • 虽然.trigger()将对jQuery对象匹配的所有元素进行操作,但.triggerHandler()仅影响第一个匹配的元素.

例如,如果你有一个隐藏元素onclick的事件,并且你想要通常调用该函数,而不是必须指定每个元素,你可以使用$('.menu').triggerHandler('click');

  • 使用.triggerHandler()创建的事件不会冒泡DOM层次结构; 如果它们不是直接由目标元素处理的,它们什么都不做.

防止传播,hopyfully不必解释这个...

  • .triggerHandler()不返回jQuery对象(允许链接),而是返回它导致执行的最后一个处理程序返回的任何值.如果没有触发处理程序,则返回undefined

这个也应该是自我解释的......

  • 你没有必要投票,你根本就不能投票......我给了你更多的例子而你仍然不明白,这不是我的错.在某些情况下,您不希望在实际点击时返回false,因此#1有效.#2是的......这就是重点,只隐藏一个,但调用整个匹配的数组.所以你可以setInterval这个函数来增加隐藏#3参见#1,你想要根据实际点击和模拟来实现不同的动作.#4如果您想要上一个实际事件返回的值而不创建新事件. (6认同)
  • 这是一个很好的答案.我不明白为什么它没有被接受. (2认同)