js 利用事件委托解决mousedown中的click

有一个需求是这样的:

父元素div绑定一个mousedown事件,子元素a绑定一个click事件。

看解构:

<div id="nav">
        <a href="javascript:void(0);">点我</a>
    </div>

 

搜了很多相关的都没有解决办法,于是我想到了事件委托,在父元素被mousedown的时候,event对象里包含了很多有用的东西。其中target就是关键!

代码:

//原生js走起
const nav = document.querySelector('#nav');
    const a = nav.querySelector('a');
    a.addEventListener("click",function(e){
        alert("a被点了");
        //e.stopPropagation();
    });
    nav.addEventListener("mousedown",function(e){
        (e.target.tagName).toLowerCase() === 'a' ? a.click :alert('你点击的是父元素');        
    });

  

这样,只要判断到我们点击到区域有a标签,说明我点击到了它,然后模拟触发一次click,就完成了我的需求了。

posted @ 2018-06-27 15:24  宋宇  阅读(638)  评论(0编辑  收藏  举报