【发布时间】:2012-09-26 00:26:43
【问题描述】:
假设 JavaScript 调度程序在其队列中有一项将删除 div 元素。早些时候,我们为这个 div 元素上的点击事件设置了监听器。调度程序将在完成当前工作(可以是任何事情)后立即安排此删除任务。此时我们点击了即将被删除的div,并且对该点击的监听器的回调被添加到队列中。
我假设调度队列是先进先出的(对吗?),所以 div 将首先被删除,删除后将引发 div 点击侦听器的回调。
我是否正确捕获了事件序列,或者删除此元素会导致点击侦听器回调从队列中拉出?
【问题讨论】:
-
你应该看看这个答案:stackoverflow.com/questions/2732818/…
-
应该注意
removeChild实际上并没有delete任何东西,元素只有在没有更多引用时才会被GC,所以它应该仍然存在(尽管在 DOM 树之外)直到事件完成,因为事件持有对它的引用。我会在修改innerHTML时假设类似的行为,但尚未对其进行测试。
标签: javascript events scheduler