js事件委托

  • 事件委托的使用地点
  • 事件委托的原理
  • jQuery中封装耳朵事件委托

问题

将ajax请求回来的数据动态的拼接到html骨架中时,要给这些元素添加事件。

    <ul id="main">
    </ul>
    ...
    $.ajax({
       url:"",
       data:"",
       success:function(data){
           for(var i=data.length-1;i>=0;i--){
               ($("<li></li>"),{
                  class:'data[0].class'
               }).appendTo("#main");
           } 
       }
    })

可以给li直接添加onclick事件。
或者使用事件委托(event delegation)

原理

事件委托是为父元素添加一个监听器,当子元素要添加事件时,事件监听器会分析冒泡上来的事件,从而找到是哪一个子元素执行的事件

基本写法

    // 为父元素添加监听器...
    document.getElementById("main").addEventListener("click",function(e) {
        // e.target是被点击的元素,如果被点击的是li元素
        if(e.target && e.target.nodeName == "LI") {
            // 找到目标并输出
            console.log("这个li的id为"+e.target.id);
        }
    });

当然,这种方法在jQuery也有封装

    $("div").delegate("button","click",function(){
      $("p").slideToggle();
    });

div标签下的button标签被点击时,p标签显示或隐藏。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一直以来,对js的一些概念还是不清晰的,很多都没有搞明白,今天无意间在群里见他们提起事件委托,所以查找了一些资料,...
    蝴蝶结199007阅读 291评论 1 3
  • 定义:通俗的讲,事件就是onclick,onmouseover,onmouseout等就是事件,委托呢,就是让别人...
    JYOKETSU3阅读 351评论 0 0
  • 前言 事件委托,也叫事件代理,是js事件中的一种常用技巧。事件委托的原理就是利用冒泡事件的机制,为一些节点的祖先节...
    zkhChris阅读 532评论 0 3
  • 事件委托就是利用事件冒泡,只指定一个时间处理程序就可以管理某一类型的所有事例。 优点:提高性能 JavaScrip...
    我真的好暴躁啊阅读 261评论 0 0
  • 我们收取快递有两种方法:一是在特定的地点等快递的到来,二是委托人代收。现实当中,我们大都采用委托的方案。而委托人接...
    饥人谷_oathy阅读 788评论 0 2