1

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()吗?


注意:不,我并没有真正在 JS 中存储任何密码。为了拥有SSCCE,我删除了 ajax 调用以及其他代码。

4

2 回答 2

3

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

与 .empty() 类似,.remove() 方法将元素从 DOM 中取出。当您想要删除元素本身以及其中的所有内容时,请使用 .remove()。除了元素本身,所有与元素关联的绑定事件和 jQuery 数据都将被删除。要删除元素而不删除数据和事件,请改用 .detach()。

于 2013-08-23T12:44:38.240 回答
2

事件绑定是否被移除?什么时候编<div>.remove()

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

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

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

.off()我应该先打电话.remove()吗?

不。

于 2013-08-23T12:44:50.023 回答