2009-09-25 5 views
4

J'ai un Fancybox (ou plus précisément) un certain nombre de boîtes de fantaisie sur une page asp.net.Jquery Fancybox ne fonctionne pas après la publication

Mon Fancybox (plugin jquery) fonctionne correctement jusqu'à ce qu'une publication se produise sur la page, puis il refuse de fonctionner.

Des pensées? Quelqu'un at-il connu un comportement similaire?

MISE À JOUR: Certains code ..

J'ai un répéteur databound avec un fancybox sur chaque point de répéter.

Ils sont instanciés par (en dehors du répéteur)

$(document).ready(function() { 
      $("a.watchvideo").fancybox({ 
      'overlayShow': false, 
      'frameWidth' : 480, 
      'frameHeight' : 400 
      }); 
     }); 

La balise d'ancrage est répété ..

href = "# watchvideo_ <% # Eval (" VideoId ")%>"

Comme un div avec

id="watchvideo_<%#Eval("VideoId") %> 

Comme c'est un élément de script qui instancie les films flash

Oui, les VideoId sont en train de sortir la page.

MISE À JOUR: Ce n'est pas un problème avec le flash ..

Il est pas un problème avec le flash comme je l'ai essayé sans le flash, il pop wont même une fenêtre avec un message simple

MISE À JOUR: Je me demande s'il s'agit du panneau de mise à jour.

Rebinding events in jQuery after Ajax update (updatepanel)

- lee

+1

S'il vous plaît afficher le code incriminé afin que nous puissions aider. Avec out code tout ce que nous pouvons faire est de spéculer – catsby

Répondre

1

Il était le panneau de mise à jour comme décrit

ici .. Rebinding events in jQuery after Ajax update (updatepanel)

Comme je suggère simplement remplacé

$(document).ready(function() { 
      $("a.watchvideo").fancybox({ 
      'overlayShow': false, 
      'frameWidth' : 480, 
      'frameHeight' : 400 
      }); 
     }); 

avec

function pageLoad(sender, args) 
{ 
    if(args.get_isPartialLoad()) 
    { 
     $("a.watchvideo").fancybox({ 
      'overlayShow': false, 
      'frameWidth' : 480, 
      'frameHeight' : 400 
      }); 

    } 
} 

et cela a fonctionné!

- Lee

+0

Vous êtes une étoile! – Anicho

1

pourrait-il que le code d'instanciation est inséré à un morceau de code qui est exécuté pas après une publication?

+0

Intéressant .. le code instanciant fancybox est sur la page aspx .. Je pourrais essayer d'écrire à la page du code derrière .. –

+0

Je l'ai essayé. Pas de joie :-( –

14

Le problème est à utiliser $(document).ready() pour lier le fancybox. Ce code est seulement exécuté une fois, lorsque la page est chargée à l'origine. Si vous voulez la fonctionnalité fancybox sur chaque publication, synchrone ou asynchrone, remplacez le $(document).ready() par pageLoad(sender, args). c'est à dire.

function pageLoad(sender, args) { 
     $("a.watchvideo").fancybox({ 
     'overlayShow': false, 
     'frameWidth' : 480, 
     'frameHeight' : 400 
     }); 
} 

see this answer for more info

+0

Salutations Russ, on dirait que vous auriez résolu mon problème si je n'y étais pas arrivé tout seul.Merci, - Lee –

+1

Aucun problème, heureux d'aider. Je recommande fortement de regarder dans les liens sur l'autre réponse - l'article est une bonne lecture et la documentation d'ASP.NET AJAX peut s'avérer extrêmement utile –

+0

Merci J'ai juste eu ce problème et je ne suis pas encore bien au courant de jQuery. –

0

Cela pourrait aider quelqu'un d'autre, mais FancyBox son code ajoute à tout beau et bien l'élément du corps < > ... ce qui est, mais réside à l'extérieur du asp.net < forme d'élément > . Mes problèmes de postback sont partis quand je FancyBox modifié pour ajouter ses objets dom à l'élément de forme < >:

$('body form:first').append(...); 
0

J'ai eu un problème similaire avec une grille vue paginée. La première page de la grille a été le lancement de la fancybox tandis que le reste n'a pas.

Je pensais que cela pourrait être un problème lié au UpdatePanel qui n'actualise qu'une partie de l'écran.

Je résolu la question en remplaçant ceci:

<script> 
     $(document).ready(function() { 

      $("a.small").fancybox(); 

     }); 
    </script> 

avec ceci:

<script> 
     function pageLoad(sender, args) { 
      $("a.small").fancybox(); 
     }; 
    </script> 
Questions connexes