- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我在 someNode
中注册了一些带有 id 的小部件(比如 id1、id2)。现在,如果我这样做,domConstruct.empty(someNode)
,这将通过执行 someNode.innerHTML= ""
从 someNode
中删除小部件。但是小部件还在内存中吗?
我的意思是,在 domConstruct.empty(someNode)
之后,我能够使用 id1 或 id2 注册一个小部件吗?
如果没有,那么我怎样才能达到同样的目的?我不想在创建期间检查具有相同 id 的小部件并销毁它(如果存在)。
P.S:我假设 dojo.empty()
和 domConstruct.empty()
以相同的方式工作。
最佳答案
dojo/dom-construct
的 API 不了解有关 Dijit 小部件的任何信息,因此当您运行 domConstruct.empty(node)
或 domConstruct.destroy 时(node)
,它不执行任何查找和销毁小部件的操作。 (我在一个很大程度上相关的问题中explained how to do that。)
当 Dijit 小部件创建时,它们会填充在由 dijit/registry
模块维护的哈希中,这允许将来通过 ID(或节点)访问它们。 dijit/registry.findWidgets
还被 dijit/_WidgetBase#getChildren
(依次由容器和布局小部件使用)用来根据 DOM 树检索子小部件。
由于 dojo/dom-construct
对 Dijit 一无所知,因此它只是销毁给定节点下的所有 DOM 节点,并且不更新 Dijit 的注册表。因此,您最终会得到不一致的状态,Dijit 认为这些小部件仍然存在,但它们的 DOM 实际上已被破坏。正如另一个问题中的回答,您应该首先使用 findWidgets
正确销毁小部件,或者考虑使用布局小部件或 ContentPane
来为您管理子小部件。
关于javascript - dojo.empty()/domConstruct.empty() 到底做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428202/
我正在使用 dojo domConstruct 动态创建表行。其中一列包含一个用于删除功能的按钮。但我不知道如何连接删除按钮的 onclick 事件。下面是我用于创建行的 js 代码。 domCons
使用 domConstruct.create 迭代数组时,我可以创建一个如下所示的列表元素: domConstruct.create("li", { innerHTML: data }, ul); 或
Dojo 有一个用于创建 DOM 的 domConstruct.toDom 方法。 http://dojotoolkit.org/reference-guide/1.9/dojo/dom-constr
假设我在 someNode 中注册了一些带有 id 的小部件(比如 id1、id2)。现在,如果我这样做,domConstruct.empty(someNode),这将通过执行 someNode.in
我的问题是在刚刚创建的元素上显示工具提示(从数据库中提取的数据)。我需要更新其内容(我尚未成功完成)并在 mouseover 和 mouseleave 上设置事件。 这是代码: // in for l
我是 DOJO 工具包的新手,仍在学习中。我有一种情况,我想为由 dojo 的 domConstruct.create() 方法创建的元素提供多个 css 类。 我使用 domConstruct.cr
我是一名优秀的程序员,十分优秀!