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!

È stato utile?

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ò.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top