JS与Jquery的事件委托机制

Posted 一米阳光!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS与Jquery的事件委托机制相关的知识,希望对你有一定的参考价值。

传送:http://www.ituring.com.cn/article/467

概念:

  什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。
  举个列子:有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收。

原理:

  利用冒泡的原理,把事件加到父级上,触发执行效果。

作用:

1.性能要好
2.针对新创建的元素,直接可以拥有事件

事件源 :

  跟this作用一样(他不用看指向问题,谁操作的就是谁),event对象下的

使用情景:

  ?为DOM中的很多元素绑定相同事件;
  ?为DOM中尚不存在的元素绑定事件;

 

JS的事件委托

 

Jquery的事件委托

技术分享
$(function(){ 
    $(‘#ul1,#ul2‘).delegate(‘li‘,‘click‘,function(){ 
        if(!$(this).attr(‘s‘)) { 
        $(this).css(‘background‘,‘red‘); 
        $(this).attr(‘s‘,true); 
        }else { 
            $(this).css(‘background‘,‘#fff‘); 
            $(this).removeAttr(‘s‘); 
        } 
    }) 
});
技术分享

最新on()方法取替了delegate()方法

技术分享
$(function(){ 
        $(‘#ul1,#ul2‘).on(‘click‘,‘li‘,function(){ 
                if(!$(this).attr(‘s‘)) { 
                $(this).css(‘background‘,‘red‘); 
                $(this).attr(‘s‘,true); 
                }else { 
                        $(this).css(‘background‘,‘#fff‘); 
                        $(this).removeAttr(‘s‘); 
                } 
        }) 
});





以上是关于JS与Jquery的事件委托机制的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 入门 -- 事件 事件绑定与事件委托

理解jquery on 委托事件的机制

JavaScript事件委托原理及Jquery中的事件委托

js的事件委托机制

JS中事件代理与委托

JS-阻止冒泡事件与事件委托