Pregunta

Tengo un FancyBox (o más exactamente) una serie de rectángulos de lujo en una página asp.net.

FancyBox (plugin de jQuery) funciona bien hasta una devolución de datos en la página aparece a continuación, se niega a trabajar.

¿Alguna idea? Cualquier persona comportó de manera similar?

ACTUALIZACIÓN: Un poco de código ..

Tengo un repetidor de enlace de datos con un FancyBox en cada elemento que se repite.

Están instanciado por (fuera del repetidor)

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

La etiqueta de anclaje se repite ..

  

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

Como es un div con

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

Como es un elemento de secuencia de comandos que instanciates las películas flash

Si los VideoIds están saliendo del la página.

ACTUALIZACIÓN: No es un problema con el flash ..

No es un problema con el flash como yo lo he probado sin el flash, que incluso no estallar una ventana con un mensaje simple en.

ACTUALIZACIÓN:. Me pregunto si es el UpdatePanel

Revinculación eventos en jQuery Ajax después de la actualización (UpdatePanel)

- Lee

¿Fue útil?

Solución 3

Fue el panel de actualización tal como se describe

Revinculación en jQuery Ajax después de la actualización (UpdatePanel)

Como se sugiere que simplemente se sustituye

$(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
            });

   }
}

y funcionó!

- Lee

Otros consejos

El problema es en el uso de $(document).ready() de obligar a la FancyBox. Este código sólo se ejecuta una vez, cuando la página se carga en un principio. Si desea que la funcionalidad FancyBox en cada devolución de datos, síncrona o asíncrona, reemplazar el $(document).ready() con pageLoad(sender, args). es decir

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

< strong> ver esta respuesta para obtener más información

¿Es posible que el código de creación de instancias se inserta en una pieza de código que no se ejecuta después de una devolución de datos?

Esto podría ayudar a alguien más, pero FancyBox añade que es código para el elemento ... que es todo bien y bueno, sino que reside fuera del elemento asp.net

. Mis problemas de devolución de datos se fueron cuando lo modifico FancyBox para anexar sus objetos DOM para el elemento :

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

I tenía un problema similar con una rejilla-vista paginada. La primera página de la red fue el lanzamiento de la FancyBox mientras que el remaing no lo hizo.

pensé que podría ser un problema relacionado con el UpdatePanel que refresca sólo una parte de la pantalla.

He resuelto el problema sustituyendo la siguiente:

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

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

        });
    </script>

con esto:

  <script>
        function pageLoad(sender, args) {
            $("a.small").fancybox();
        };
    </script>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top