Quan a un element d'una pàgina web se li vol afegir un event, amb jQuery és molt fàcil:
<a class="myclass" href="#">test1</a>
<a class="myclass" href="#">test2</a>
<a class="myclass" href="#">test3</a>
El javascript seria:
$(".myclass").click( function() {
});
El problema arriba quan aquests nodes es generen dinàmicament, ja sigui per javascript o que arriben els nodes per Ajax i s'afegeixen al DOM:
<a id="anchor1" href="#">crear enllaços dinamicament<a>
<script type="text/javascript">
$(function(){
$("#anchor1").click( function() {
$("#anchor1").append('<a class="myclass" href="#">test4</a>');
});
});
</script>
Aleshores cal algo que mantingui els events, encara que siguin elements nous. Per això es fa servir el jQuery on(). Quedaria algo com:
$('body').on('click', 'a.myclass', function() {
});
O si es vol filar més prim, i ajustar més l'avaluació (que no sigui en tots els clics):
$('ul').on('click', 'li', function() {
alert( $(this).text() );
});
|