在Dojo中是否有办法在DOM元素中查找所有窗口小部件后代?我使用下面的示例,它将仅列出元素的子元素,在这种情况下,任何作为文档对象的子元素的小部件,但不是所有后代或嵌套小部件。希望这很清楚。
var widgets = dijit.findWidgets(dojo.doc);
dojo.forEach(widgets, function(w) {
console.log(w);
});
我可以编写自己的递归函数,但我想确保我没有错过已经执行此操作的Dojo方法。
非常感谢
答案 0 :(得分:9)
嗯, dijit.findWidgets(parentWidget.domNode)
?
编辑哦,现在我发现Widgets不会递归搜索。
我检查了dijit.findWidgets源代码,它所做的就是检查dijit注册表中表示的widgetid
属性的节点。以下版本使用dojo.query以递归方式执行相同的搜索:
function findEvenTheNestedWidgets(innitialNode){
return dojo.query("[widgetid]", innitialNode)
.map(dijit.byNode)
.filter(function(wid){ return wid;}) //filter invalid widget ids that yielded undefined
}