当替换元素时,事件和数据会发生什么

时间:2013-01-27 18:56:10

标签: javascript ajax events

我很想知道当ajax加载时A元素被替换时,所有在其上蒙蔽的事件和数据将被断开或直接删除?

如果一旦被替换,我不相信任何未被$(parent), $(document) or $(window)蒙蔽的事件和数据。如果是这样,他们是刚刚断开连接还是被删除了?

1 个答案:

答案 0 :(得分:2)

如果一个事件直接绑定到一个元素(不是委托事件处理),那么当该元素被删除时,它的事件处理程序也将被删除。

同样,如果已经向该DOM元素添加了任何属性或属性,那么它们将与该特定DOM元素一起使用,因此如果删除了DOM元素,那么它们也是如此。

如果有人使用委托事件处理(观察事件冒泡到更高级别的父对象,如bodydocument,那么这些事件仍将存在,因为事件的对象是实际上附着没有被取代。


您的问题没有用jQuery标记,但是您使用了一些类似jQuery的示例,因此在jQuery世界中,附加的事件如下:

$("#myObject").on('click', fn);

替换#myObject时将被删除。但是,这样的委托事件:

$(document.body).on('click', '#myObject', fn);

即使#myObject被具有相同ID的其他对象替换,仍然有效,因为事件实际附加到的对象(在这种情况下为document.body)没有被删除或者被替换。