Javascript 替换元素时,事件和数据会发生什么变化
我很想知道,当一个元素在ajax加载时被替换时,它上面的所有事件和数据都将被直接断开或删除Javascript 替换元素时,事件和数据会发生什么变化,javascript,ajax,events,Javascript,Ajax,Events,我很想知道,当一个元素在ajax加载时被替换时,它上面的所有事件和数据都将被直接断开或删除 我不相信任何未通过$(父项)、$(文档)或$(窗口)隐藏的事件和数据会在一旦被替换后继续保留。如果是这样,它们只是被断开或删除了吗?如果一个事件直接绑定到一个元素(而不是委托事件处理),那么当该元素被删除时,它的事件处理程序也会被删除 类似地,如果向该DOM元素添加了任何属性或属性,它们将与该特定DOM元素一起使用,因此如果删除了该DOM元素,它们也将被删除 如果正在使用委托事件处理(监视冒泡到更高级别父
我不相信任何未通过<代码>$(父项)、$(文档)或$(窗口)隐藏的事件和数据会在一旦被替换后继续保留。如果是这样,它们只是被断开或删除了吗?如果一个事件直接绑定到一个元素(而不是委托事件处理),那么当该元素被删除时,它的事件处理程序也会被删除 类似地,如果向该DOM元素添加了任何属性或属性,它们将与该特定DOM元素一起使用,因此如果删除了该DOM元素,它们也将被删除 如果正在使用委托事件处理(监视冒泡到更高级别父对象(如
body
或document
)的事件,则这些事件仍将存在,因为事件实际附加到的对象没有被替换
您的问题没有使用jQuery标记,但您使用了一些类似jQuery的示例,因此在jQuery世界中,附加了如下事件:
$("#myObject").on('click', fn);
$(document.body).on('click', '#myObject', fn);
将在替换#myObject
时删除。但是,类似以下委托事件:
$("#myObject").on('click', fn);
$(document.body).on('click', '#myObject', fn);
即使由于事件实际附加到的对象(
document.body
)而将#myObject
替换为具有相同ID的其他对象,仍将有效未被删除或替换。@Till-我添加了一些关于委派事件处理的更多信息和jQuery示例。这非常有帮助,但如何在委派事件附加到正文时删除委派事件?@a0z0ra-如果您只想删除事件处理程序,请使用jQuery的.off()
对应用原始事件处理程序的对象的方法。