12-事件委托(事件代理)

什么是事件委托

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

原理 : 

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

作用: 

1 . 性能要好 

2. 针对新创建的元素 ,直接可以拥有事件

事件源: 

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

 

使用情景 : 

  为DOM中的很多元素绑定相同事件 ;

  为DOM中尚不存在的元素绑定事件;

 

示例 : 

<body>
    <ul>
        <li class="wangzhe">马克波罗</li>
        <li>公孙离</li>
        <li>干将</li>
    </ul>
</body>
<script src="jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        // 通过on()方法
        $("ul").on("click","#namei,.wangzhe",function () {
            console.log(this);
        });

        // 未来追加的元素
        $("ul").append('<a id ="namei" >娜美</a>')
    })
</script>

语法 : 

on(type,selector ,data,fn);

描述 :  在选定的元素上绑定一个或多个事件处理函数 

参数解释 : 

events(string) : 一个或多个空格分隔的事件类型

selector(string): 一个选择器字符串 , 用于过滤出被选中的元素中能触发事件的后代元素

data :  当一个事件被触发时  , 要传递给事件处理函数的 event.data

fn: 回调函数

 

posted @ 2018-10-03 21:09  heshun  阅读(84)  评论(0编辑  收藏  举报