http://jsfiddle.net/walkerneo/QqkkA/Delega evento Javascript, gestione genitori di elementi cliccati?
Ho visto molte domande qui sia chiedendo o di essere risposto con delega evento in javascript, ma devo ancora vedere, però, come utilizzare la delega evento per elementi che non stanno per essere gli obiettivi dell'evento click.
Ad esempio:
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;
}
Cosa succede se voglio aggiungere un evento click per gestire gli elementi li
quando sono cliccato? Se allego un gestore di eventi all'elemento ul
, gli div
s saranno sempre gli elementi di destinazione. Oltre a controllare ogni genitore dell'elemento di destinazione in una funzione di clic, come posso realizzare questo?
edit:
voglio utilizzare la delega evento invece di:
var lis = document.getElementsByTagName('li');
for(var i=0;i<lis.length;i++){
lis[i].onclick = function(){};
}
Ma se faccio:
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: io non sono interessato a come utilizzare Librerie Javascript per questo, sono interessato a come lo fanno e come può essere fatto con pure js.
In realtà confuso sulla tua domanda, non ho capito cosa vuoi raggiungere. –
Mi inculo sempre su questo ... questo link può aiutare: http://www.quirksmode.org/js/events_order.html –
@Michal, sembrava inefficiente, mi chiedevo se fosse l'unico modo. – mowwwalker