清空标签时,内部的事件附加按钮是否收集了垃圾?

时间:2012-12-20 10:36:06

标签: javascript jquery

有了这样的代码,我想知道我是否第二次运行这个功能,这种情况会发生:

  1. 当清空#deals标签时,内部的所有btn都会被擦除,尽管它们上面有活动并且生活很好。
  2. 我必须首先取消订阅btn,否则清空#deals标记会导致内存泄漏?
  3. 列表项
  4. 代码:

    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();
              ...
             });
        });
    }
    

2 个答案:

答案 0 :(得分:3)

没有内存泄漏。

正如您在jQuery source中所看到的,它负责清理所有内容。

答案 1 :(得分:3)

您不必取消订阅:

  

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

(来自the documentation