如果调用.remove时自动调用.off?

时间:2013-08-23 12:38:54

标签: javascript jquery

jQuery的:

var a = $("<a href='#'>Click me</a>")
var d = $("div:first");
a.appendTo(d);
a.on("click",function(){
   if(prompt('enter password') === 'password'){
      $(d).remove();
   }
});

小提琴:http://jsfiddle.net/bujRr/

<小时/> 问题:虽然<a>不再存在,但click仍然与它绑定。

  1. 是否删除了事件绑定?当<div>.remove()编辑?
  2. 如果不是,那么在理论上运行几百次后,这会导致性能问题吗?
  3. 我应该在.off()之前致电.remove()吗?
  4. <小时/> 注意:不,我实际上并没有在JS中存储任何密码。为了拥有SSCCE,我删除了ajax调用以及其他代码。

2 个答案:

答案 0 :(得分:3)

根据文档,事件也被删除:http://api.jquery.com/remove/

  

与.empty()类似,.remove()方法将元素取出   DOM。如果要删除元素本身,请使用.remove()   作为里面的一切。 除了元素本身,所有   绑定事件和与元素关联的jQuery数据将被删除。   要删除元素而不删除数据和事件,请使用.detach()   代替。

答案 1 :(得分:2)

  

是否删除了事件绑定?当<div>.remove()编辑时?

是的,系统会自动删除绑定到已删除项目(或其子项)的事件。

  

如果不是,那么在理论上运行几百次后,这是否会导致性能问题?

会的,但由于上述原因,这不是问题

  

我应该在.off()之前致电.remove()吗?

没有