5

このようなコードを持っているので、この関数をもう一度実行した場合、どのシナリオが発生するのか疑問に思っています:

  1. #deals タグを空にすると、btnそれらのイベントにもかかわらず、内部のすべてが消去され、人生は良好です。
  2. 最初にそれらの購読を解除する必要がありbtnます。そうしないと、タグを空にすると#dealsメモリ リークが発生しますか?
  3. リスト項目

コード:

function test(){
    var row = $(this).closest('tr');  
    $(row).find('#deals').empty();

    $(result).find('#tab li a').each(function() {               
      var btn = $('<a/>', {class: 'btn', href: '#'});

      $(row).find('#deals').append(btn);

      btn.click(function(event){
          event.preventDefault();
          ...
         });
    });
}
4

2 に答える 2

3

メモリリークなし。

jQuery sourceでわかるように、すべてをクリーンアップします。

于 2012-12-20T10:38:03.083 に答える
3

登録を解除する必要はありません:

メモリ リークを回避するために、jQuery は要素自体を削除する前に、子要素からデータやイベント ハンドラーなどの他の構成要素を削除します。

ドキュメントから)

于 2012-12-20T10:38:10.067 に答える