Dojo 中有没有办法在 DOM 元素中查找所有小部件后代?
Posted
技术标签:
【中文标题】Dojo 中有没有办法在 DOM 元素中查找所有小部件后代?【英文标题】:Is there a way in Dojo to find all widget descendants in a DOM element? 【发布时间】:2011-10-25 08:56:25 【问题描述】:Dojo 有没有办法在一个 DOM 元素中查找所有小部件后代?我使用了下面的示例,它只会列出元素的子元素,在这种情况下,任何作为文档对象的子元素的小部件,而不是所有后代或嵌套小部件。希望这很清楚。
var widgets = dijit.findWidgets(dojo.doc);
dojo.forEach(widgets, function(w)
console.log(w);
);
我可以编写自己的递归函数,但我想确保我不会错过已经这样做的 Dojo 方法。
非常感谢
【问题讨论】:
为了清楚起见,您想要一个函数来获取 domNode 下的所有小部件,包括那些嵌套在其他小部件中的小部件? @screenm0nkey,您最终找到解决方案了吗?我也需要这个确切的功能。 【参考方案1】:嗯,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
【讨论】:
嘿missingno。那是猜测吗?我认为没有 dojo.findWidgets 方法。 哎呀,我的意思是 dijit... 重要的是您可以选择小部件的 domNode 来开始搜索,而不是搜索文档中的所有小部件。 但这仍然只给我直接在那个domNode下的孩子,而不是嵌套在孩子和孩子的孩子等内部的小部件。 我猜没有这样的功能,除非有人现在已经回答了。我本来想 +1 你的帮助,但不小心把它选为正确答案;) 检查更新版本。现在我做了一些研究,我认为它实际上值得绿色复选标记:P以上是关于Dojo 中有没有办法在 DOM 元素中查找所有小部件后代?的主要内容,如果未能解决你的问题,请参考以下文章