http://jsfiddle.net/walkerneo/QqkkA/
Я видел здесь много вопросов, либо спрашивающих, либо получающих ответы о делегировании событий в javascript, но я еще не видел, однако, как использовать делегирование событий для элементов, которые не будут целевыми для события клика.
Например:
HTML:
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
Но если я это сделаю:
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.