index.php
// load jquery.js and jquery.ui.js
$("#dialog_a").load("template_a.php").dialog();
$("#dialog_b").load("template_b.php").dialog();
Vorlage_a.php
just HTML, no JS
Vorlage_b.php
// !!! -> load jquery.js and jquery.ui.js <- !!!
$("#dialog").load("template_c.php").dialog({modal:true});
Wie Sie sehen können, lade ich zwei Dialoge. #dialog_a lädt nur Text ohne irgendeine Funktion, aber #dialog_b lädt ein Standalone-Skript, das wiederum jquery und jquery.ui enthält.
Nach dem Öffnen von #dialog_b (durch Anker / onclick) ist es "snicht möglich, auf Objekte in der index.php zuzugreifen (z. B. Schließen eines Dialogs). Für mich scheint es, dass template_b.php das DOM überschreibt. Aber ich habe keine Ahnung, wie ich dieses Problem beheben kann. Haben Sie?
Danke im Voraus!
Antworten:
0 für die Antwort № 1Lösung: Verwenden Sie die jQuery live () -Funktion!
index.php
$(".anchor_in_dialog_or_not_doesnt_matter").live("click", function() {
$("#dialog").dialog();
});
Vorlage_b.php
if ($_GET["standalone"])
// load jquery, jquery.ui
endif;
Ich hoffe es hilft jemandem!
Bearbeiten: Wie unten schon erwähnt, benutze on () statt live ()!