0

次のコードを使用して、あるページを別のページから読み込んで、ダイアログ内に 2 ページ目の html を表示できるようにしています。

 var $link = $('#addTagButton');
        var $dialog = $('#addTag')
                .load($link.attr('href'))
                .dialog({
                    autoOpen: false,
                    title: $link.attr('title'),
                    width: 600
                });
        $link.click(function() {
            $dialog.dialog('open');
            return false;
        });

ただし、2 ページ目に select2 コントロールをロードすると、select2 オプションが認識されず、基本的にその機能がロードされません。両方のページでselect2.jsへの参照があり、他のすべては完全に機能していますが、そこにあります。

  1. 誰もこの問題を解決する方法を知っていますか?
  2. あるページを別のページからロードして動作させるより良い方法はありますか?

どうも。

4

1 に答える 1

0

「あるページから別のページをロードする」は少し心配です。

一般原則は次のとおりです。

  • .load(...)ページ全体ではなく、有効な HTML フラグメントをロードする必要があります
  • 通常、読み込まれたフラグメントに関連付けられた JavaScript は、ホスト ページ (ページ 1) に表示されます。何をしているのかわかっている場合は、HTML フラグメントを使用してスクリプト ブロックロードし、スクリプトを実行するかどうかを決定するための制御手段を行使できます。ここの「スクリプトの実行」セクションを参照してください
  • バブリングしないイベント (select 要素の「onchange」イベントなど) のハンドラは、フラグメントがロードされた後に要素にアタッチする必要があります。
  • バブリングするイベント (「マウスオーバー」、「クリック」など) のハンドラーは、多くの場合、ホスト ページの静的コンテナーに委任して、既存および将来の含まれる要素で動作するようにすることができます。

イベント ハンドラのアタッチの基本については、.onを参照してください。

于 2012-09-09T00:40:44.030 に答える