2010-07-09 3 views
1

I ont joint un div à mon corpsjquery joint éléments

$('<div id="container"><img class="large" src="'+ img +'" /><a href="#">previous</a> | <a href="#" class="next">next</a></div>').appendTo('body').hide().fadeIn(); 

Mais je ne peux pas interagir avec les éléments que je, ai ajouté si je tente quelque chose comme

$('a.next').click(function(){ 
    $(this).remove(); 
    }); 

il ne fonctionne pas .. comment puis-je faire jquery prendre note des éléments ajoutés?

Répondre

4

Utilisez .live() pour reconnaître les éléments actuels et futurs correspondant au sélecteur, comme celui-ci:

$('a.next').live('click', function(){ 
    $(this).remove(); 
}); 

Pourquoi ça ne marche pas actuellement? Cette partie: $('a.next') dit "trouver <a class="next"> qui existent", alors faites-leur quelque chose ... mais ces liens que vous ajoutez dynamiquement n'existent pas à ce moment, ils sont créés plus tard, vous avez donc besoin d'une approche différente .

+0

Je suis sûr que le problème a été causé par le fait que le contenu est ajouté plus tard, mais je ne savais pas comment le résoudre. THX. – andrei

2

vous devez

  • soit reporter la fixation du gestionnaire de clic jusqu'à ce que l'étiquette a a été insérée dans le document
  • ou utiliser jquery.delegate ou jquery.live afin que vous n'avez pas besoin se soucier