Liens dynamics et problème jQuery Lightbox: Chargement de l’image dans une visionneuse… complètement bouleversé!

J’ai une fonction qui crée dynamicment des liens pour une galerie de photos. La fonction produit également une image plus grande en tant qu’image d’arrière-plan d’un div lorsque vous cliquez sur la vignette. Ce que je veux faire, c’est un troisième événement. Si l’utilisateur clique sur l’image agrandie dans le div, la jQuery Fancybox charge une version encore plus grande de l’image affichée dans le div. Le problème est que le lien pour la balise d’ancrage que j’utilise est créé de manière dynamic, et je sais que Fancybox parsing le code HTML lorsque le DOM est prêt … malheureusement, ma fonction modifie le DOM en ajoutant la balise d’ancrage pour l’image en taille réelle . L’aide dont j’ai besoin est d’utiliser les options de la Fancybox pour spécifier l’atsortingbut href du plugin. Je suis désolé que c’était si long … voici le code.

jQuery:

function gallery(picid, picnum){ var ext = 'jpg'; var fullSize = 'imgs/'+picid+'_full.'+ext; $('#photolarge').css("background", 'url(imgs/'+picid+'_large.'+ext+') no-repeat'); $('#photolarge a').attr( { href: fullSize //rel: 'lightbox', } ); $("#lightboxlink").click(function(){ $('#lightboxlink').fancybox({ 'autoDimensions' : false, 'width' : 'auto', 'height' : 'auto', 'href' : fullSize }); }); return false; 

}

Extrait de code HTML

 

CSS subséquent:

 #photolarge { width: 590px; height: 400px; margin-left: 7px; border: 2px solid; background: none;} #phototable { width: 590px; height: 300px; border: 2px solid; margin: 10px 0 0 7px;} #phototable img { cursor: pointer;} #phototable ul { list-style: none; display: inline;} #phototable li { padding-left: 10px;} #lightboxlink { display: block; height: 100%; width: 100%;} 

Toute aide serait grandement appréciée !!!

Vous pouvez utiliser .live() pour le gestionnaire d’événements et .sortingggerHandler() pour ouvrir immédiatement la lightbox, comme ceci:

 $("#lightboxlink").live('click', function(e){ $(this).filter(':not(.fb)').fancybox({ 'autoDimensions' : false, 'width' : 'auto', 'height' : 'auto', 'href' : fullSize }).addClass('fb'); $(this).sortingggerHandler('click'); e.preventDefault(); //prevent opening in new window }); 

Cela exécute .fancybox() sur le lien, mais seulement si nous ne l’avons pas encore fait, suivi par un .fb classe .fb . Qu’il s’agisse d’une nouvelle ou d’une nouvelle liaison, nous devons déclencher le gestionnaire de click , ce que fancybox écoute pour pouvoir s’ouvrir.