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;
}
Что делать, если я хочу добавить событие 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);
EDIT: Мне не интересно, как использовать библиотеки JavaScript для этого, мне интересно, как они это делают и как это можно сделать с помощью чистого js.