2010-05-29 13 views
0

Ceci est mon code jqueryJquery bind ne marche pas sur le travail AJAX chargé HTML

jQuery(document).ready (function() { 

    // post 
    $('.post').bind('mouseenter mouseleave', function() { 
     $(this).filter('.btn').toggleClass('hidden'); 
    }); 


}); 

Il fonctionne très bien sur un document normal. Mais quand je charge du HTM: (c'est-à-dire des divs avec des attributs .post) en utilisant ajax et l'incorpore dans mon DOM.

Le code ci-dessus ne fonctionne pas avec ces divs.

Répondre

3

Essayez d'utiliser live:

jQuery(document).ready (function() { 
    $('.post').live('mouseenter mouseleave', function() { 
     $(this).filter('.btn').toggleClass('hidden'); 
    }); 
}); 

Ou mieux encore delegate

jQuery(document).ready (function() { 
    $('#posts').delegate('.post','mouseenter mouseleave', function() { 
     $(this).filter('.btn').toggleClass('hidden'); 
    }); 
}); 
+0

Salut, j'ai essayé celui-ci et son ne fonctionne pas à la fois sur le contenu statique et ajax chargé aussi bien. Et je veux que cela fonctionne réellement avec le contenu statique et le contenu chargé en une seule fois. –

+0

Live ou délégué doit faire en sorte que l'événement se déclenche pour le contenu statique et chargé. Il doit y avoir quelque chose d'autre qui se passe. – PetersenDidIt

+0

Aucun verrou .. Je ne sais pas ce que c'est .. Mais lier fonctionne bien avec le contenu statique et vivre et déléguer ne semble pas fonctionner –

2

Votre timing est probablement du 0 car les attributs .post doivent exister dans le dom avant de pouvoir lier quoi que ce soit.

+0

grâce à la connaissance. Alors, quelle est la solution de contournement? –

+0

Voyez si cela vous aide: http://api.jquery.com/delegate/ Utilisez '$ ('body'). Delegate ('. Post', 'mouseenter mouseleave', f' etc – edl

+0

Je veux dire 'corps' comme – edl