2013-03-08 3 views
0

J'utilise deux plugins jQuery: easytabs et prettyPhoto. Je veux utiliser le plugin prettyPhoto pour les images sur (1) une page statique et (2) sur les images qui sont chargées via ajax par le plugin easytabs.Appel d'un plugin jQuery une fois pour le contenu statique et le contenu chargé via ajax

Voici ce que je fais en ce moment (notez que cela fonctionne très bien, mais je me demande s'il y a un moyen plus efficace de le faire):

$(document).ready(function(){ 
    $("a[rel^='prettyPhoto']").prettyPhoto(); // Calling prettyPhoto for the first time (for images on the static page) 

    $('#portfolio-tabs').easytabs(); 
    $('#portfolio-tabs').bind('easytabs:ajax:complete', function() { 
     $("a[rel^='prettyPhoto']").prettyPhoto(); // Calling this again for it to work on images loaded via ajax 
    ) 
}); 
+0

Quelle est la question de la performance vous faites face qui nécessite une approche plus efficace? –

+0

C'est bon, ce serait mieux s'il y a un sélecteur plus rapide pour les ancres, mais seulement s'il y a un problème de performance. – kidwon

+0

En fait, je n'ai pas remarqué de problèmes de performances. C'est juste mal d'instancier le plugin deux fois ... Donc mon code est ok? – transbetacism

Répondre

0

Je crois que les chargés easytabs contenu sont rendus avec en portfolio-tabs puis modifiez le rappel ajax à

var tabs = $('#portfolio-tabs').bind('easytabs:ajax:complete', function() { 
    $("a[rel^='prettyPhoto']", tabs).prettyPhoto(); // Calling this again for it to work on images loaded via ajax 
) 
+0

Cela ne ferait qu'instancier le plugin prettyPhoto après que la requête ajax easytabs soit terminée, non? Le truc c'est que j'ai besoin de prettyPhoto avant que la requête ajax ne soit déclenchée. – transbetacism

+0

vous devez garder $ ("a [rel^= 'prettyPhoto']"). PrettyPhoto(); 'avant' $ ('# portfolio-tabs'). easytabs(); 'aussi –

Questions connexes