2010-04-10 7 views
0

cet exemple ci-dessous fonctionne lorsque l'événement hover est truqué et quand ce n'est pas le cas, il travaille pour les éléments déjà dans DOM, mais quand l'élément créé dynamiquement ne fonctionne pas, je réalise que jQuery doit utiliser live() ou délégué() pour cela, la chose est que j'ai essayé de le modifier et de ses pas les résultats comme prévu, voici le code de travail:comment modifier cette syntaxe jquery

$(".sidebar li").hover(
     function(){ 
     $(this).css("background-color", "#F9F4D0"); 
     $(this).append($('<button class="promoter" type="button" title="Active promotion"></button>')); 
        }, 
     function(){ 
     $(this).css("background-color", "#F9FAFA"); 
     $(this).children("button").remove(); 
       }  
        ); 

Voici le peu quand je voulais ajouter en direct, mais il ne produit pas des résultats corrects:

$(".sidebar li").live('hover', function(){ 
     $(this).css("background-color", "#F9F4D0"); 
     $(this).append($('<button class="promoter" type="button" title="Active promotion"></button>')); 
        }, 
     function(){ 
     $(this).css("background-color", "#F9FAFA"); 
     $(this).children("button").remove(); 
       }  
        ); 

Où ai-je fait une erreur, merci vous

Répondre

2

Vous pouvez le faire:

$(".sidebar li").live('mouseenter', function(){ 
    $(this).css("background-color", "#F9F4D0"); 
    $(this).append($('<button class="promoter" type="button" title="Active promotion"></button>')); 
}).live('mouseleave', function(){ 
    $(this).css("background-color", "#F9FAFA"); 
    $(this).children("button").remove(); 
}); 

Les .live('hover', function() {}) œuvres sténographie pour des choses comme $(this).children().slideToggle() ou quelque chose, mais pour cela, vous devez utiliser les événements mouseenter et mouseleave directement, les mêmes événements .hover() se fixe en fait.

+0

gr8 ça a marché J'ai juste besoin d'attendre la réponse pour être accepté. merci, vous avez des livres à recommander sur jquery, comment aller mieux/maîtriser finalement? –

+0

@Gandalf - Je ne suis pas sûr, je n'en ai jamais lu ... Je l'ai appris un peu quand je suis tombé sur quelque chose de nouveau dont j'avais besoin. Un autre développeur a lu ceci, il a beaucoup appris et les critiques semblent bonnes aussi: http://www.amazon.com/Learning-jQuery-Interaction-Development-JavaScript/dp/1847192505 –

1

Assurez-vous que vous utilisez jQuery 1.4 ou version ultérieure, et according to the docs, vous devez utiliser mouseenter et mouseleave plutôt que planer.

Questions connexes