0

index.php

// load jquery.js and jquery.ui.js
$("#dialog_a").load("template_a.php").dialog();
$("#dialog_b").load("template_b.php").dialog();

template_a.php

just HTML, no JS

template_b.php

// !!! -> load jquery.js and jquery.ui.js <- !!!
$("#dialog").load("template_c.php").dialog({modal:true});

ご覧のとおり、2 つのダイアログを読み込みます。#dialog_a は関数なしでテキストをロードするだけですが、#dialog_b は jquery と jquery.ui を含むスタンドアロン スクリプトを再度ロードします。

#dialog_b を開いた後 (anchor/onclick で)、index.php 内のオブジェクトにアクセスできません (ダイアログを閉じるなど)。私にとっては、template_b.php が DOM を上書きしているようです。しかし、この問題を解決する方法がわかりません。ありますか?

前もって感謝します!

4

1 に答える 1

0

解決策: jQuery の live() 関数を使用してください。

index.php

$(".anchor_in_dialog_or_not_doesnt_matter").live("click", function() {
    $("#dialog").dialog();
});

template_b.php

if ($_GET["standalone"])
    // load jquery, jquery.ui
endif;

誰かの役に立てば幸いです!

編集: adamb が既に以下で述べたように、live() の代わりに on() を使用してください!

于 2012-11-22T12:59:19.240 に答える