首页 > js原生事件委托

js原生事件委托

下面的事件委托我只想点击的时候判断他的nodename是不是等于'a'
而不是还要等于什么h3div之类的,这要怎么做?
如果是判断nodename如果是等于a的话,必须不能点到h3div标签,不然没反应

<ul id="parent-list">
    <li id="post-1"><a href="#" style="display:block"><h3>Item 1</h3><div>我是div</div> </a></li>
    <li id="post-2"><a href="#" style="display:block"><h3>Item 1</h3><div>我是div</div> </a></li>
    <li id="post-3"><a href="#" style="display:block"><h3>Item 1</h3><div>我是div</div> </a></li>
    <li id="post-4"><a href="#" style="display:block"><h3>Item 1</h3><div>我是div</div> </a></li>
  </ul>

  <script type="text/javascript">
    document.getElementById("parent-list").addEventListener("click",function(e) {
      var nodename = e.target.nodeName.toLocaleLowerCase();
      if(e.target && (nodename == "h3" || nodename == "div")) {
        alert(e.target.nodeName);
      }
    },false);
  </script>

JS

document.getElementById("parent-list").addEventListener("click",function(e) {
      var nodename = e.target.nodeName.toLocaleLowerCase();
      if(e.target && nodename == "a") {
        alert(e.target.nodeName);
      }
    },false);

CSS

#parent-list > li > a *{
  pointer-events: none;
}

这样可以满足你的需求,详见:http://jsrun.net/LLKKp


卧槽,要理解你表达的意思真的很困难,你到底想要实现个什么功能!

document.getElementById("parent-list").addEventListener("click",function(e) {
    var nodename = e.target.nodeName.toLocaleLowerCase();
    if(nodename == 'a') {
        alert('你点击的元素是一个a标签');
    }
},false);

原答案已删除。

搞不懂你到底要干什么,把判断条件改成与'a'比较不就好了?


你发的这代码不是你写的?

你要的判断不就是 if(nodename == 'a') 吗?

【热门文章】
【热门文章】