js事件委托/事件代理

事件委托就是利用事件冒泡,只指定一个时间处理程序就可以管理某一类型的所有事例。

  • 优点:提高性能

JavaScript方式

    <ul id="list">
      <li>按钮1</li>
      <li>按钮2</li>
      <li>按钮3</li>
      <li>按钮4</li>
    </ul>
    <button onclick="createLi()">create</button>
    document.getElementById('list').onclick = function(e){
      var e = e || window.event;
      // event对象属性target 返回事件的目标节点
      var target = e.target || e.srcElement;
      if(target.nodeName == 'LI'){
        alert(123+'---'+target.innerHTML);
      }
    }
    // 对于之后添加的元素代理事件依然有效
    function createLi(){
      var newLi = document.createElement('li');
      newLi.innerHTML = 'newLi';
      document.getElementById('list').appendChild(newLi);
    }

用事件委托的方式,新添加的子元素是带有事件效果的。当我们使用事件委托的时候,不需要去遍历元素的子节点,只需要给父级元素添加事件就好了,可以减少DOM操作。

jQuery方式

on委托事件
语法:$(selector).delegate(childSelector,event,data,function)

    $('#list').on('click', 'li',function(){
      alert(123+'---'+$(this).html());
    });
    function createLi(){
      $('#list').append('<li></li>').children('li:last').html('newLi');
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 5,188评论 0 8
  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 5,529评论 2 10
  • 1、 jQuery 能做什么? jquery是一个丰富的js库,内部对js的很多复杂的方法进行了封装和加工,比如j...
    zh_yang阅读 5,218评论 6 13
  • 本文章是老马jQuery视频的讲义和上课的代码。具体观看视频地址:https://chuanke.baidu.co...
    IT老马阅读 7,336评论 3 14
  • 人生有多少的失意, 就有多少的乐趣。 生活中的真理, 往往都淹没在了日子里。 人生无悔, 岁月静好, 无聊就这么被...
    琢玉书生阅读 1,033评论 0 3