2009-03-23 8 views
0

Je suis un newb jQuery. Je construis une boutique en ligne et j'utilise jQuery plugin 'Thickbox' (http://jquery.com/demo/thickbox). La boutique en ligne est configurée pour afficher une «image agrandie» qui exécute le script Thickbox JS et affiche une image.jQuery Thickbox Édition

Un problème se produit lorsque les données sont placées sur la page via un système CMS (en utilisant Ajax je crois?). Lorsque vous choisissez un autre produit dans la liste déroulante "Choisir un type", les nouvelles données du système CMS sont placées sur la page et le script Thickbox n'est pas appliqué car il ne peut pas voir les nouvelles données.

J'ai joué avec un correctif que j'ai trouvé (http://www.codynolden.com/blog/2009/01/thickbox-and-ajax-using-livequery) mais je n'arrive pas à l'appliquer sur mon site Web?

Un exemple en direct de mon site: http://madisonlane.businesscatalyst.com/_product_36331/AAA-_Autumn_Dress

Toutes les idées?

+0

j'ai depuis une solution triés à ce problème: dans thickbox.js: $ (domChunk) .cliquez (function() { a été remplacé par ceci: $ (domChunk) .live (click, function() { – mattt

Répondre

2

dans thickbox.js:

$(domChunk).click(function(){ 

a été remplacé par ceci:

$(domChunk).live(click, function(){ 
+0

merci mais vous avez oublié de mettre '' arround click :) – Awea

0

Utilisez-vous un boîtier épais IFRAMED? Vous pouvez avoir plus de chance avec ça, car par défaut, thickbox est juste affiché dans un DIV. Vous devez ajouter & TB_iframe = true à la chaîne de requête de votre URL pour obtenir

0

Je ne lis peut-être pas votre question correctement, mais d'après la façon dont cela semble, le contenu est détruit et créé avec de nouveaux éléments, n'est-ce pas?

Si c'est le cas, vous devrez appeler tb_init ('. Some-selector') lorsque vous chargez un nouveau contenu. Je me souviens d'avoir à le faire pour mettre en place une caisse épaisse une fois. Thickbox fonctionne en parcourant votre page et en câblant des événements de clic pour établir un lien avec la classe "thickbox". En utilisant tb_init(), vous pouvez câbler votre contenu à tout moment sur n'importe quel sélecteur de votre choix. Découvrez le code source de Thickbox pour voir ce que je veux dire.

+0

Stuart B, je suis un jQuery newb. pourriez-vous élaborer sur ce que vous voulez dire? c'est un problème que je dois obtenir fixé dès que possible pour lancer le site .. – mattt

1

Stuart a vu juste: merci beaucoup!

J'étais coincé avec un problème similaire: dans mon cas, la cible d'un lien ajouté (via la méthode jQuery .append()) n'était pas chargée dans une thickbox.

Mon code jQuery a été exécuté en fonction document.ready():

$("#subpages").append('','<a href="..." class="thickbox" [...]'); 

simplement ajouter:

tb_init('.thickbox'); //required to reinitialize thickbox as DOM was manipulated 

juste après la dernière ligne fixe le problème.

Questions connexes