2010-12-04 6 views
1

J'utilise Fancybox sur mon site pour ouvrir des liens vers d'autres pages (pages externes).JQuery Fancybox ne fonctionne pas après DIV recharger

Fondamentalement, l'utilisateur clique sur une image et cela ouvre une fancybox contenant la page externe. Les liens d'image sont contenus dans une page (l'enfant) qui est affichée dans un DIV sur une autre page (le parent). Le parent a la possibilité de recharger les données dans la DIV en rechargeant la page enfant avec différents paramètres qui vont modifier l'image et les liens.

Tout cela fonctionne parfaitement avec la première charge. Mais après cela quand le DIV est rechargé avec la page enfant contenant des données différentes, le popup fancybox ne fonctionne plus. Si je fais un rafraîchissement F5 sur la page, cela fonctionne à nouveau. Mais seulement sur le premier chargement.

Le code sur la page d'enfant à fancybox de configuration pour les liens d'image:

$.noConflict(); 
$(document).ready(function() { 
    $(".userdetailslink").fancybox({ 
     'width'    : '80%', 
     'height'   : '80%', 
     'autoScale'   : false, 
     'transitionIn'  : 'elastic', 
     'transitionOut'  : 'elastic', 
     'type'    : 'iframe' 
    }); 
}); 

J'ai aussi essayé ce qui suit avec les mêmes résultats:

$.noConflict(); 
$(".userdetailslink").ready(function() { 
    $(".userdetailslink").fancybox({ 
     'width'    : '80%', 
     'height'   : '80%', 
     'autoScale'   : false, 
     'transitionIn'  : 'elastic', 
     'transitionOut'  : 'elastic', 
     'type'    : 'iframe' 
    }); 
}); 

Toute aide serait appréciée.

Répondre

0

Utilisez-vous les méthodes AJAX pour charger la div? Vous pouvez utiliser la fonction de rappel pour appliquer la gestion des événements au contenu chargé.

$("div").load("url", function(){ 
     $(".userdetailslink").fancybox({ 
    'width'    : '80%', 
    'height'   : '80%', 
    'autoScale'   : false, 
    'transitionIn'  : 'elastic', 
    'transitionOut'  : 'elastic', 
    'type'    : 'iframe' 
    }); 

}); 

De cette façon, il fonctionne également après la charge. Bien sûr, vous faites la charge initiale comme vous êtes.

+0

Merci, votre réponse est tout à fait logique mais je l'ai essayée et elle ne charge encore que sur le premier chargement. J'ai juste ajouté une alerte à la fonction de rappel pour voir si elle est appelée sur chaque chargement. Et c'est. Mais dès que j'ajoute l'appel fancybox au rappel, même l'alerte n'est affichée qu'une seule fois. Bizarre! Des pensées? – hermanschutte

+0

Mise à jour: j'ai ajouté une autre alerte avant l'appel de fancybox. Celui-ci est exécuté sur chaque chargement, mais celui après l'appel de fancybox seulement sur le premier chargement. Se pourrait-il qu'appeler plusieurs fois fancybox pour le même élément provoquerait une erreur? Des idées sur la façon de déconnecter fancybox d'un élément? – hermanschutte