http://jsfiddle.net/walkerneo/QqkkA/
我在这里看到很多人询问或回答javascript中的事件委托问题,但是我还没有看到如何使用事件委托来处理不会成为点击事件目标的元素。例如:
HTML:
<ul>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
</ul>
CSS:
ul{
padding:20px;
}
li{
margin-left:30px;
margin-bottom:10px;
border:1px solid black;
}
.d{
padding:10px;
background:gray;
}
如果我想添加一个点击事件来处理被点击的li
元素怎么办?如果我将事件处理程序附加到ul
元素上,那么div
元素将始终是目标元素。除了在点击函数中检查目标元素的每个父级之外,我如何实现这一点?编辑:
我想使用事件委托来代替:
var lis = document.getElementsByTagName('li');
for(var i=0;i<lis.length;i++){
lis[i].onclick = function(){};
}
但如果我执行以下操作:
document.getElementsByTagName('ul')[0].addEventListener('click',function(e){
// e.target is going to be the div, not the li
if(e.target.tagName=='LI'){
}
},false);
编辑:我不想知道如何使用Javascript库来做到这一点,我想知道它们是如何实现的以及如何用纯js实现。