如果您使用 dijit._Container 扩展您的父级,您可以通过调用来获取您的小部件集parent.getChildren()
。小部件返回的顺序是它们被添加到父级(parent.addChild()
)的顺序,而不是 DOM 同级引擎的顺序。但是,一旦您使用解析器,这个 ofc 将是相同的。好吧,任何小部件都会实现 getChildren,但 _Container 类的不同之处在于,addChild: function(/*dijit._Widget*/ widget, /*int?*/ insertIndex)
andremoveChild: function(/*Widget|int*/ widget)
函数非常漂亮。如果在添加子项时放置一个 insertIndex,则兄弟关系是可以管理的。
考虑到 domNodes,使用 dijit,我们可以“超越” DOM 并在小部件层中工作——这只是一个 JS 包装。可链接的函数 '.domNodes()' 在 dojo 中的任何地方都不存在,您需要调用类似于以下内容:
parent.getChildren().forEach(function(childWidget) {
var domNode = childWidget.domNode;
...
});
// this would get nowhere as the return child-set is merely a 'stupid' array
parent.getChildren().set("attribute", "value");
这是上面 foreach 的一个可爱的小包装,使用 dijit/map
// retreives an array of the actual domNodes of widgetset
dijit.registry.map(function(widget){return widget.domNode;}).forEach(
// uses hitch to allow passing parameters without wrapping in new function
dojo.hitch(
window, // on random scope
dojo.addClass, // calling function
"imTheChildDomNode"// arguments[0]
)
);