下面的事件委托我只想点击的时候判断他的nodename
是不是等于'a'
而不是还要等于什么h3
和div
之类的,这要怎么做?
如果是判断nodename
如果是等于a
的话,必须不能点到h3
和div
标签,不然没反应
<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')
吗?