Intercept

联合创作 · 2023-10-02

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.

浏览 1
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报