Domanda

Ho un Fancybox (o più precisamente) un certo numero di scatole di fantasia in una pagina di asp.net.

Fancybox (jQuery plugin) funziona bene fino a un postback sulla pagina appare poi si rifiuta di lavorare.

Qualche idea? Chiunque ha sperimentato un comportamento simile?

UPDATE: Alcuni Codice ..

Ho un ripetitore databound con un fancybox su ogni voce di ripetere.

Sono istanziare dal (al di fuori del ripetitore)

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

Il tag di ancoraggio si ripete ..

  

href = "# watchvideo _ <% # Eval (" VideoId ")%>"

Come è un div con

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

Come è un elemento script che instanciates i filmati Flash

Si le VideoIds vengono emessi della pagina.

UPDATE: Non è un problema con il flash ..

Non è un problema con il flash come ho provato senza il flash, non ci vorrà anche pop una finestra con un semplice messaggio in.

UPDATE:. Mi chiedo se è l'UpdatePanel

rebinding eventi in jQuery dopo l'aggiornamento Ajax (UpdatePanel)

- lee

È stato utile?

Soluzione 3

E 'stato il pannello di aggiornamento come descritto

rilegatura in jQuery dopo l'aggiornamento Ajax (UpdatePanel)

Come suggerito ho semplicemente sostituito

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

con

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

   }
}

e ha funzionato!

- Lee

Altri suggerimenti

Il problema è nell'uso $(document).ready() di impegnare la fancybox. Questo codice viene eseguito solo una volta, quando la pagina viene caricata in origine. Se si desidera che la funzionalità fancybox su ogni postback, sincrona o asincrona, sostituire il $(document).ready() con pageLoad(sender, args). cioè

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

< strong> questa risposta per ulteriori informazioni

Potrebbe essere che viene inserito il codice di creare un'istanza ad un pezzo di codice che non viene eseguito dopo un postback?

Questo potrebbe aiutare qualcun altro, ma Fancybox aggiunge è il codice per l'elemento ... che è tutto bene e bene, ma risiede al di fuori l'elemento asp.net

. I miei problemi di postback è andato via quando ho modificato Fancybox di aggiungere i propri oggetti DOM per l'elemento :

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

Ho avuto un problema simile con una griglia di vista paging. La prima pagina della griglia stava lanciando il fancybox mentre il remaing non ha fatto.

Ho pensato che potrebbe essere un problema legato alla UpdatePanel che rinfresca solo una parte dello schermo.

ho risolto il problema sostituendo in questo modo:

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

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

        });
    </script>

con questo:

  <script>
        function pageLoad(sender, args) {
            $("a.small").fancybox();
        };
    </script>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top