Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换元素时,事件和数据会发生什么变化_Javascript_Ajax_Events - Fatal编程技术网

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

Javascript 替换元素时,事件和数据会发生什么变化,javascript,ajax,events,Javascript,Ajax,Events,我很想知道,当一个元素在ajax加载时被替换时,它上面的所有事件和数据都将被直接断开或删除 我不相信任何未通过$(父项)、$(文档)或$(窗口)隐藏的事件和数据会在一旦被替换后继续保留。如果是这样,它们只是被断开或删除了吗?如果一个事件直接绑定到一个元素(而不是委托事件处理),那么当该元素被删除时,它的事件处理程序也会被删除 类似地,如果向该DOM元素添加了任何属性或属性,它们将与该特定DOM元素一起使用,因此如果删除了该DOM元素,它们也将被删除 如果正在使用委托事件处理(监视冒泡到更高级别父

我很想知道,当一个元素在ajax加载时被替换时,它上面的所有事件和数据都将被直接断开或删除


我不相信任何未通过<代码>$(父项)、$(文档)或$(窗口)隐藏的事件和数据会在一旦被替换后继续保留。如果是这样,它们只是被断开或删除了吗?

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

类似地,如果向该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()
对应用原始事件处理程序的对象的方法。