1

ajax 経由でコンテンツが取り込まれるページがあります。私が抱えている問題は、コンテンツが読み込まれた後に関連するイベント リスナーを追加することです。すべてのスクリプトを先頭から再度実行するようブラウザに指示する方法はありますか?

以下は、ページの先頭から実行されるコードの簡単な例です。明らかに、AJAX 経由で取り込まれた '.RRCustomizeBox .customize' に一致する新しい html 要素には、次のクリック イベントはありません。

例えば:

_vvdCMS.kklsRegions = {

    init: function (){
        $(document).ready(function(){

            $('.RRCustomizeBox .customize').click( function(){
                _vvdCMS.kklsRegions.showRRCustoms(this);
            });

        });
    },

    showRRCustoms: function(obj) {
        var objParent = $(obj).parent();
        objParent.find('.RRCustomizeBoxForm').fadeIn(700);
    }
}
_vvdCMS.kklsRegions.init();

ヒントをありがとう、

ジョン

4

2 に答える 2

5

すべての初期化コードを関数に入れ、その関数を 2 つの場所から呼び出すことができます。

  1. document.ready() 内
  2. 新しいコンテンツを読み込んだ後

例えば:

function initDynamicEventHandlers() {
    // set up your event handlers here
}

$(document).ready(initDynamicEventHandlers);

$(whatever).load(url, initDynamicEventHandlers)

置き換えられないコンテンツに複数のイベント ハンドラーがインストールされないようにする必要があります。


または、2 番目のオプションとして、一部のタイプのロジック (マウス イベントやキー イベントなど) では、委任されたイベント処理を使用して、置き換えられない静的な親オブジェクトにアタッチされたイベント処理をインストールすると、イベント処理は変更なしで機能します。その下で変化する動的コンテンツ。

そのためには、次の委任形式を使用します.on()

$(static parent object selector).on('click', dynamic object selector, fn)
于 2012-08-27T19:27:27.280 に答える