0

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

$(parent), $(document) or $(window)如果一旦被替换,我不相信任何没有被蒙蔽的事件和数据将保持不变。如果是这样,它们是否只是被断开或删除?

4

1 回答 1

2

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

类似地,如果任何属性或属性已添加到该 DOM 元素,它们将与该特定 DOM 元素一起使用,因此如果 DOM 元素被删除,它们也会被删除。

如果使用委托事件处理(观察冒泡到更高级别的父对象的事件,例如bodyor document,那么这些事件将仍然存在,因为事件实际附加到的对象没有被替换。


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

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

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

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

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

于 2013-01-27T18:59:00.410 回答