Jquery Fancybox non funziona dopo il postback
-
16-09-2019 - |
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
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
});
}
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.netHo 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>