triggerHandler vs. trigger in jQuery

From the Docs at http://api.jquery.com/triggerHandler/

The .triggerHandler() method behaves
similarly to .trigger(), with the
following exceptions:

  • The .triggerHandler() method does not cause the default behavior of an
    event to occur (such as a form
    submission).

Not preventing the default browser actions allow you to specify an action that occurs on focus or select, etc etc etc, that applies a style. Maybe you have a dynamic menu that is Javascript based, so you don’t want to apply the style purely with CSS otherwise those with Javascript disabled won’t understand why the layout looks odd. You can use something like $('menu1select').triggerHandler('click');

  • While .trigger() will operate on all elements matched by the jQuery
    object, .triggerHandler() only affects
    the first matched element.

If you have an event which hides an element onclick for example, and you want to call that function generally, instead of having to specify each element, you can use $('.menu').triggerHandler('click');

  • Events created with .triggerHandler() do not bubble up the
    DOM hierarchy; if they are not handled
    by the target element directly, they
    do nothing.

Prevents propagation, hopyfully don’t have to explain this one…

  • Instead of returning the jQuery object (to allow chaining),
    .triggerHandler() returns whatever
    value was returned by the last handler
    it caused to be executed. If no
    handlers are triggered, it returns
    undefined

This one should be self explanatory as well…

Leave a Comment