2010-11-23 3 views
0

J'utilise un plugin appelé zoom cloud. le problème est, il se fixe à n'importe quoi avec class="cloud-zoom" lorsque le DOM est prêt. Mon problème est que je ne joins pas cette classe aux éléments DOM au moment du rendu. Il est ajouté dynamiquement. Donc, je dois en quelque sorte à .live mélanger() avec lui pour le faire fonctionner:Comment joindre jQuery .live() à cet extrait de code?

$(document).ready(function() { 
    $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom(); 
}); 

.live() attend un événement. Je ne suis pas sûr comment spécifier un événement appelé invoquer CloudZoom() sur n'importe quel élément qui est injecté dans le DOM avec la classe cloud-zoom.

Répondre

5

Vous ne pouvez pas utiliser .live() ici, cela fonctionne d'une manière spécifique très différente. Pour les plugins sur les éléments dynamiques, il y a 2 options, soit ré-exécuter ce code lorsque de nouveaux éléments sont, par exemple dans votre ajax gestionnaire success, ou en utilisant the .livequery() plugin, comme ceci:

$(document).ready(function() { 
    $('.cloud-zoom, .cloud-zoom-gallery').livequery(function() { 
     $(this).CloudZoom(); 
    }); 
}); 
+0

Merci Nick, je vais essayer et poster. Je n'utilise pas XHR ici. Mes images sont disponibles après le chargement du DOM. Le problème est seulement un à la fois est disponible dans le div où la classe cloud-zoom est. Lorsque je survole une mini-image, elle apparaît dans l'onglet image principale et je dois l'appliquer. – randombits

+0

BTW, je reçois beaucoup de ceci dans la console en essayant ceci: Identificateur attendu pour le sélecteur de classe mais trouvé «parent». – randombits

+0

@randombits - à partir du plugin? –

0

Je pense qu'il pourrait être quelque chose comme:

$(document).ready(function() { 
    $('.cloud-zoom, .cloud-zoom-gallery').live(function(){ 
     $(this).CloudZoom(); 
    });  
}); 

Ok, tant pis, il attend un événement. Je pensais à plugin jQuery Livequery, qui accepte la fonction anonyme sans événement

+0

'.live()' ne fonctionne pas comme ceci, il est piloté par les événements. –

+0

Cela ne fonctionnera pas. – Gidon

+0

Oui, je pensais à livequery, comme indiqué dans votre réponse. – Flipke

0

Vous pouvez essayer cette si la ci-dessus ne fonctionne pas:

$(document).ready(function() { 
$('.cloud-zoom, .cloud-zoom-gallery').live(function(){ 
    $(this).CloudZoom(); 
}).trigger('click');  

});

Juste ajouter le clic de déclenchement à la fin, travaille pour moi.

Questions connexes