30 votes

La méthode jQuery on () ne lie pas les événements comme le faisait live ()

Comme décrit sur http://api.jquery.com/live/:

Comme de jQuery 1.7, l' .live() la méthode est obsolète. Utiliser .sur() pour attacher les gestionnaires d'événements.

La droite. Ainsi, au lieu de

$('.dynamicallyCreatedElement').live('click', function(){
  console.log('click');
});

Je dois utiliser:

$('.dynamicallyCreatedElement').on('click', function(){
  console.log('click');
});

Cependant, il n'est pas lier l'événement à des éléments créés après l' on() de l'appelant. Ainsi en est-il vraiment mieux live() méthode ?

Ai-je raté quelque chose ?

63voto

Sergi Papaseit Points 8979

Pour utiliser on de la même manière qu' live utilisé pour le travail, vous devez l'utiliser comme:

$(document).on("click", 
    ".dynamicallyCreatedElement", function(){  console.log('click'); });  

Afin de vous lier l' on gestionnaire à l' document (ou, en fait, l'élément conteneur où le nouveau wlements sera "apparaissant" -- Merci à @devnull69 pour la précision), puis la passer à un type d'événement et le sélecteur.

Vous trouverez quelques exemples à mi-chemin par le biais de l' live page de documentation.

13voto

elclanrs Points 40467
$('#closestStaticParent').on('click', '.dynamicallyCreatedElement' function(){
    console.log('click');
});

4voto

tbleckert Points 1541

Utiliser en tant que délégué ()

 $('body').on('click', '.dynamicallyCreatedElement', function () {
});
 

EDIT: Juste pour que tout le monde l'obtienne, lors de l'utilisation de delegate (), le sélecteur est le premier argument et on () c'est le deuxième.

2voto

Barry Kaye Points 5722

J'ai trouvé la nécessité d'utiliser cette approche avec sur:

 $('#container').on('click','.dynamicallyCreatedElement',function(){
    console.log('click');
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X