http://jsfiddle.net/walkerneo/QqkkA/Delegowanie zdarzeń JavaScript, obsługa rodziców klikniętych elementów?
Widziałem wiele pytań tutaj albo prosząc o czym odpowiedział lub delegacji zdarzeń w JavaScript, ale jeszcze nie mam, aby zobaczyć, jednak, jak korzystać z delegacji zdarzeń dla elementów, które nie będą cele zdarzenia kliknięcia.
Na przykład:
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;
}
Co jeśli chcę dodać zdarzenie click do obsługi li
elementów, gdy są one kliknięty? Jeśli dołączę moduł obsługi zdarzeń do elementu ul
, zawsze będą to elementy docelowe. Oprócz sprawdzenia każdego elementu macierzystego elementu docelowego w funkcji kliknięcia, w jaki sposób mogę to zrobić?
edit:
chcę użyć delegacji zdarzeń zamiast:
var lis = document.getElementsByTagName('li');
for(var i=0;i<lis.length;i++){
lis[i].onclick = function(){};
}
Ale jeśli to zrobię:
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);
EDIT: Nie jestem zainteresowany jak korzystać Biblioteki JavaScript dla tego, jestem zainteresowany, jak to robią i jak można to zrobić z czystym js.
Właściwie zdezorientowany na twoje pytanie, nie rozumiem, co chcesz osiągnąć. –
Zawsze jestem spieprzony na ten temat ... ten link może pomóc: http://www.quirksmode.org/js/events_order.html –
@Michal, Wydawało się, że jest mało wydajny, zastanawiałem się, czy to był jedyny sposób. – mowwwalker