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 源代码中看到的那样,它负责清理所有内容。

于 2012-12-20T10:38:03.083 回答
3

您不必取消订阅:

为了避免内存泄漏,jQuery 在删除元素本身之前从子元素中删除其他构造,例如数据和事件处理程序。

(来自文档

于 2012-12-20T10:38:10.067 回答