Intercept 介绍
This plugin simplifies the use of Event
Delegation with multiple different descendants.
This concept is very useful for pages with dynamic content (f.e: AHAH) where
DOM elements are created and removed constantly, requiring re-binding.
This method also saves a lot of resources, as it uses less event handlers to
achieve the same objective.
It can be used in 2 ways:(I will exemplify with a table)
$('table') .intercept('click', 'tr', function(e){...}) .intercept('click', 'td.happy', function(e){...}) .intercept('click', '#something', function(e){...});
or
$('table').intercept('click', { tr: function(e){...}, 'td.happy': function(e){...}, '#something': function(e){...} });
By calling intercept on the same element/event, the new handler/s are appended
to the old list.
jQuery.Intercept won’t have such a good perfomance when many different
selectors are registered to one element, this can be noted for events that are
triggered very often, like mouseover. If you need more scalability, and you
can handle your problem with simpler selectors. Then you should check
jQuery.Listen instead, for a
similar approach.
Since 1.1.2, “absolute” selectors are supported, that is, selectors that
specify parents, descendants, siblings. Just use it the way it’s normally
used.
Thanks to Michael Grosser for bringing up the idea.