Php restituisce thickbox link che non funziona
Domanda
Sto correndo un po ' un problema quando cerco di restituire un link per tirare su una thickbox sulla mia pagina da un semplice php echo.Fondamentalmente, quello che ho è:
Una pagina con alcune affermazioni come:
<?php
include ("display_header.php");
?>
Ognuno di istruzioni include solo i punti ad un file php che tira un breve query e gli echi di un link con un ancoraggio ref per aprire una linea di thickbox (con un form quando l'utente fa clic sul link di testo come:
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>";
Così, quando l'utente fa clic sul link nella pagina, a interagire con una forma dovrebbe pop-up.L'utente inserisce le modifiche alla data sezione, fare clic su invia e jquery ajax post di forma e ricarica il div con l'istruzione include per visualizzare le modifiche.
Questo funziona la prima volta caricata la pagina, ma una volta che mi invia il modulo e provare a fare clic sul restituito link non succede nulla di nuovo.Questo sembra funzionare anche se ho il collegamento circondano il div con l'istruzione include al suo interno (che non è un grande affare), ma non riesco a capire perché non funziona se ho il link in php incluso economico.
Qualcuno può fornire alcune linee guida?So che ci sono un sacco di persone brillanti qui e probabilmente sto solo non capire qualcosa di molto di base.Grazie!
Soluzione
È necessario associare thickbox per il link Eventi/live.Qualcosa di simile a:
$("a.thickbox").live("click",function() {
tb_init('a.thickbox');
});
Che vi impediranno di javascript abilitato link da perdere il loro legame thickbox dopo sono ricaricati o iniettati per via ajax.
È possibile farlo anche con la richiamata per il vostro $.ajax (o $.post o quello che è) metodo, ad esempio:
$.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');
}
});
Altri suggerimenti
Sembra che questo è un problema javascript e non un problema php.
Sembra che a me si registra un evento quando la pagina viene caricata e una volta che l'evento ajax è completo, non si è nuova registrazione dell'evento. Non posso sapere che senza vedere il javascript però.