美文网首页
事件委托的正确写法

事件委托的正确写法

作者: size_of | 来源:发表于2017-08-23 22:12 被阅读0次

一般网上的代码都是下面这个样子:

var oUl = document.getElementById("ul1");
  oUl.onclick = function(ev){
    var ev = ev || window.event;
    var target = ev.target || ev.srcElement;
    if(target.nodeName.toLowerCase() == 'li'){
            alert(123);
         alert(target.innerHTML);
    }
  }

但是如果你的li标签里嵌套了其他标签,比如:

<ul id="ul1">
    <li><span>111</span></li>
</ul>

那么当你点击“111”的时候上面的js写法就是无效的,因为你直接点击的并不是li标签。所以在这里我们还需要判断点击的标签的父元素是不是li,所以这里的代码中要加一个while循环:

var oUl = document.getElementById("ul1");

oUl.onclick = function(e){
    var e = e || window.event; 
    var target = e.target || e.srcElement;
    while(target.tagName !== 'LI'){
      target = target.parentNode;
      if(target === oUl){
        target = null;
        break;
      }
    }
    if(target){
      console.log('你点击了ul中的li');
    }else{
      console.log('你点击的不是ul中的li');
    }
}

相关文章

  • 事件委托的正确写法

    一般网上的代码都是下面这个样子: 但是如果你的li标签里嵌套了其他标签,比如: 那么当你点击“111”的时候上面的...

  • 事件委托、阻止默认动作、阻止事件冒泡

    事件委托 正确写法 常见错误写法 bug 在于,如果用户点击的是 li 里面的 span,就没法触发 fn,这显然...

  • Basic learning

    DOM: 一、正确的事件委托 错误的写法: 这么写的原因是假如想要点击的是li就执行回调,但是li里面嵌套了其他标...

  • 事件绑定、事件冒泡与捕获

    一、事件绑定事件绑定又称事件委托,事件代理,可以给同一个div绑定多个事件 非IE: IE: 绑定事件兼容写法:(...

  • 使用原生 JS 实现事件委托

    很多情况下都可能使用到事件委托,那么对于一个使用者来说,为什么要使用事件委托?又是否正确的使用了事件委托?这里我想...

  • React合成事件

    为什么需要合成事件 兼容浏览器监听写法 避免大量节点绑定事件占用内存,将事件委托到document上,有统一的事件...

  • react绑定事件你真的会写吗

    使用react肯定会用到绑定事件。绑定事件又有很多种写法,你之前的写法真的正确吗。 在render方法里绑定 当然...

  • 2019-05-30 函数的点击事件遇到的问题

    html js正确的写法,点击之后才会触发事件 var aaa = document.getElementById...

  • 事件委托

    ------------------事件委托----------------- 事件: 事件委托: 原理: 冒泡 ...

  • web前端面试题@六(事件委托)

    *说到事件委托,我们首先先要知道什么是事件委托—— · 那么什么是事件委托呢??? JS里的事件委托就是当事件...

网友评论

      本文标题:事件委托的正确写法

      本文链接:https://www.haomeiwen.com/subject/pnijdxtx.html