Frage

Ich laufe in ein bisschen ein Problem, wenn ich versuche, eine Verbindung zurückzukehren, um eine thickbox auf meiner Seite aus einem einfachen php echo zu. Im Grunde, was ich habe, ist:

Eine Seite mit einigen beinhalten Aussagen wie:

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

Jeder der include-Anweisungen verweist nur auf eine PHP-Datei, die eine kurze Abfrage und echos aus einer Verbindung mit einem Anker ref zieht eine Inline-thickbox zu öffnen (mit einer Form), wenn die Benutzer wie auf dem Link-Text klickt:

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>";
So

, wenn der Benutzer auf den Link auf der Seite klickt, ein thickbox mit einem Formular soll aufzutauchen. Der Benutzer gibt seine Änderungen an dem Abschnitt gegeben, Klicks einreichen und jquery ajax Beiträge der Form und lädt die div mit der Include-Anweisung, um die Änderungen anzuzeigen.

Das funktioniert zum ersten Mal die Seite geladen wird, aber sobald ich das Formular aus und versuchen, auf den zurückgegebenen Link zu klicken wieder nichts passiert. Dies scheint zu funktionieren, wenn ich über die Verknüpfung die div mit der Include-Anweisung umgibt innen (das keine große Sache ist zu tun), aber ich verstehe einfach nicht, warum dies nicht funktioniert, wenn ich den Link in dem einbezogenen php-Anweisung.

Kann jemand einige Hinweise bieten? Ich weiß, dass es eine Menge brillant Leute ist hier, und ich bin wahrscheinlich einfach nicht verstehen, etwas sehr einfach. Dank!

War es hilfreich?

Lösung

Sie müssen thickbox auf Ihre Links zu binden, mit Events / Live . So etwas wie:

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

Das wird Ihre thickbox aktiviert Links verhindern, verlieren ihre Bindung an thickbox, nachdem sie über Ajax erneut geladen oder eingespritzt wird.

Sie können es auch in dem Rückruf zu Ihrem $ Schnipsel (oder $ .post oder was auch immer) Verfahren, z.

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

Andere Tipps

Es klingt wie dies ein Javascript-Problem ist und nicht ein PHP-Problem.

Es klingt für mich wie Sie ein Ereignis registrieren, wenn die Seite geladen wird, und sobald das Ajax-Ereignis abgeschlossen ist, werden Sie nicht das Ereignis Neuregistrierung. Das kann ich nicht wissen, ohne jedoch das Javascript zu sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top