2011-10-25 29 views
6

Dojo有没有在DOM元素中查找所有小部件后代的方法?我使用下面的例子,它只会列出元素的子元素,在这种情况下,任何小部件都是文档对象的子元素,但不是所有后代或嵌套小部件。希望这是明确的。Dojo中有没有一种方法可以在DOM元素中查找所有窗口小部件后代?

var widgets = dijit.findWidgets(dojo.doc); 
dojo.forEach(widgets, function(w) { 
    console.log(w); 
}); 

我可以只写我自己的递归函数,但我想确保我不是一个道场方法,它已经这样做错过了。

非常感谢

+0

仅仅是明确的,你想一个函数来获取所有低于れ小部件,包括其嵌套在其他部件的部件? – BuffaloBuffalo

+0

@ screenm0nkey,你有没有最终找到解决方案?我也需要这个确切的功能。 – carmenism

回答

9

嗯,dijit.findWidgets(parentWidget.domNode)

编辑哦,现在我需要findWidgets不会递归搜索。

我检查了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 
} 
+0

嘿丢失。这是一个猜测吗?我不认为有一个dojo.findWidgets方法。 – screenm0nkey

+0

oops,我的意思是dijit ...重要的是你可以选择widget的domNode来开始搜索,而不是搜索文档中的所有小部件。 – hugomg

+0

但是,这仍然只给了我直接在该domNode下的孩子,而不是嵌套在儿童和孩子的孩子等内部的小部件等。 – screenm0nkey

相关问题