如果 JS 未连接到 DOM 时,是否会使用事件侦听器删除双重创建的元素
Will JS remove dunamically created element with event listener if it's not connected to the DOM?
让我们想象我们有这样的代码:
function someName(callback) {
var elem = document.createElement('input');
elem.addEventListener('change', function(evt) {
callback();
}, false);
// some code
elem.click();
}
// some code
someName(function() {
alert("Hello world!");
});
问题是:JS在移出回调的上下文后,是否会完全删除在"someName"函数中创建的"elem"元素?另一个问题是:如果发出"click"事件后没有更改"elem"元素,JS会删除它吗?
你能解释一下什么时候删除"elem"元素吗?
PS:我正在尝试使用 node-webkit 编写一个简单的应用程序,需要这样的代码来让 node-webkit 打开文件对话框(打开文件、保存文件等)并处理它的结果。
函数内部定义的变量仅在执行函数时存在于函数内部。
你的代码创建一个输入元素,并将一个回调函数分配给它的状态更改处理程序,但你实际上并没有将元素附加/插入到任何地方的 DOM,所以该元素只作为该变量存在;在函数结束后,它永远不会成为 DOM 中存在的东西
因此,当函数结束时,变量将被销毁,该元素将不再存在,包括状态更改处理程序。
旁注:它.createElement()
不是.create()
(除非你有定义.create()
方法的代码......
相关文章:
- javascript删除事件侦听器
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器
- JavaScript删除未知侦听器
- 在离开页面之前删除事件侦听器
- 如何删除事件侦听器
- JS:删除带有接受参数的处理程序的事件侦听器
- Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
- 我需要删除2016年的事件侦听器吗
- 使用jQuery代理时删除事件侦听器
- 不能使用删除事件侦听器
- 如何使用.bind(this)删除对象的事件侦听器
- 正在创建事件侦听器以从本地存储中删除对象
- 删除添加的事件侦听器
- 正在删除使用绑定添加的事件侦听器
- 在使用chrome.tabs.onUpdated.addListener后访问给定URL时删除侦听器
- 在 JavaScript 上添加/删除侦听器(垃圾收集器)
- 在地图标记上删除侦听器后添加侦听器
- JavaScript在从数组中读取时未删除侦听器
- 我似乎无法使用组件将卸载可靠地删除侦听器
- 从注入脚本中删除侦听器