Pregunta

Estoy corriendo en un poco de un problema cuando trato de devolver un enlace para levantar un thickbox en mi página desde un simple eco php. Básicamente lo que tengo es:

Una página con algunos incluyen declaraciones como:

<?php 
    include ("display_header.php");
?>

Cada una de las sentencias de inclusión simplemente apunta a un archivo PHP que tira de una consulta corta y ecos fuera un enlace con una ref ancla para abrir una thickbox en línea (con una forma) cuando el usuario hace clic en el enlace de texto como:

echo "<a href='#TB_inline?height=265&width=225&inlineId=header_change' class='thickbox' style='text-decoration:none; color:#990000'>";
echo "Query Result etc";
echo "</a>";

Así que cuando el usuario hace clic en el enlace en la página, un thickbox con una forma que se supone que aparecerá. El usuario introduce sus cambios a la sección dada, hace clic en Enviar, y los puestos de jquery ajax la forma y vuelve a cargar el div con la sentencia include para mostrar los cambios.

Esto funciona la primera vez que se carga la página, pero una vez que envíe el formulario y tratar de hacer clic en el enlace de regresar de nuevo no pasa nada. Esto parece funcionar si tengo el enlace rodean el div con la sentencia include en el interior (que no es una gran cosa que hacer), pero simplemente no entiendo por qué esto no funciona si tengo el enlace incluido en el php declaración.

¿Alguien puede ofrecer una cierta dirección? Sé que hay mucha gente brillante aquí y estoy probablemente no entender algo muy básico. Gracias!

¿Fue útil?

Solución

Es necesario unir thickbox a sus enlaces utilizando Eventos / vivo. Algo así como:

$("a.thickbox").live("click",function() {
    tb_init('a.thickbox');
});

Esto evitará que sus enlaces habilitados Thickbox de la pérdida de su unión a Thickbox después de que se vuelven a cargar o se inyectan a través de AJAX.

También puede hacerlo en la devolución de llamada a su método de $ .ajax (o $ .post o lo que sea), por ejemplo:.

$.ajax({
    type:       "GET",
    url:        "/ajax-content.php",
    cache:      false,
    data:       "f=foo&b=bar",
    loading:    $('.loading').html(''),
    success:    function(html) {
                    $('#ajaxContent').html(html);
                    //re-attach thickbox
                    tb_init('a.thickbox, area.thickbox, input.thickbox');
                }
});

Otros consejos

Parece que este es un problema javascript y php no es un problema.

Parece que a mí se registra un evento cuando se carga la página y una vez que el evento se haya completado el Ajax, que está no volver a registrar el evento. No puedo saber que sin ver el javascript, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top