http://jsfiddle.net/walkerneo/QqkkA/Javascript事件代表團,處理點擊元素的父母?
我見過這裏的許多問題提出詢問或與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;
}
如果我想添加一個click事件處理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庫,我感興趣的是他們是如何做到這一點以及如何用純j完成的。
實際上對你的問題感到困惑,不明白你想達到什麼目的。 – 2012-03-28 19:51:34
我總是搞砸了這個......這個鏈接可能有幫助:http://www.quirksmode.org/js/events_order.html – 2012-03-28 20:14:11
@Michal,這似乎效率低下,我想知道這是否唯一的方法。 – mowwwalker 2012-03-29 01:11:15