我很想知道当ajax加载时A元素被替换时,所有在其上蒙蔽的事件和数据将被断开或直接删除?
如果一旦被替换,我不相信任何未被$(parent), $(document) or $(window)
蒙蔽的事件和数据。如果是这样,他们是刚刚断开连接还是被删除了?
答案 0 :(得分:2)
如果一个事件直接绑定到一个元素(不是委托事件处理),那么当该元素被删除时,它的事件处理程序也将被删除。
同样,如果已经向该DOM元素添加了任何属性或属性,那么它们将与该特定DOM元素一起使用,因此如果删除了DOM元素,那么它们也是如此。
如果有人使用委托事件处理(观察事件冒泡到更高级别的父对象,如body
或document
,那么这些事件仍将存在,因为事件的对象是实际上附着没有被取代。
您的问题没有用jQuery标记,但是您使用了一些类似jQuery的示例,因此在jQuery世界中,附加的事件如下:
$("#myObject").on('click', fn);
替换#myObject
时将被删除。但是,这样的委托事件:
$(document.body).on('click', '#myObject', fn);
即使#myObject
被具有相同ID的其他对象替换,仍然有效,因为事件实际附加到的对象(在这种情况下为document.body
)没有被删除或者被替换。