1

動的に生成されたコンテンツに JS を再適用する最良の方法は何ですか? 「イベントを再バインドする」ではなく「JS を再適用する」と言ったのは、「イベントをバインドし、dom を変更する JS を再適用する」ことを意味するため、これまでに行ったことは次のようなものです。

main.js:
function repplyDynamic(){
    $('.dynamic:not(.js-initialized)').each(function(){
        $(this).addClass('js-initialized').append('<div class="chaging_dom"></div>').click(function(){
            alert("Ae!");
        });
    });
}


other_code.js
$('body').append('<div id="dynamic">content</div>'); // could be a ajax call
reapplyDynamic();

しかし、これは非常に厄介だと思います。皆さん、より良いアプローチはありますか?

4

3 に答える 3

1

個人的には、dommods()必要なすべての変更 (ツールチップ、フォーム、テキストエリアの自動サイズ変更など) を行う関数が呼び出され、DOM への重要な変更が行われるたびにそれを呼び出します。

言い換えれば、まさにあなたがしていることですが、別の関数名を使用しています。それは何も悪いことではありません。

于 2012-05-10T01:02:18.077 に答える
0

jQuery の $().on メソッドを使用して、イベント ハンドラーを現在または将来の HTML 要素にアタッチできます。

于 2012-05-10T01:02:46.477 に答える
0
//main.js
function applyDynamicStuff(content){
    return content                                  //return content
        .append('<div class="chaging_dom"></div>')  //with appended element
        .click(function(){                          //with click hander
            alert("Ae!");
        });
}

//other_code.js 
var dynamicItem = $('<div>content</div>')           //the new content
applyDynamicStuff(dynamicItem).appendTo('body');    //apply Dynamic stuff and append to body
于 2012-05-10T01:07:14.807 に答える