我有一个dojox/form/Manager
形式,有几个级别的嵌套,类似于这个jsFiddle:http://jsfiddle.net/8YDjT/1/
鉴于其中一个Fieldset
的名称,如何在其下找到所有表单小部件?
E.g。给定fields_b
,如何在不对其名称或其他此类诡计进行硬编码的情况下找到小工具b_1
,b_2
和b_3
?
答案 0 :(得分:2)
使用getDescendants()
,您可以从特定小部件中获取所有子级(在所有级别上)。然后,您可以使用myWidget.declaredClass
验证窗口小部件的类,以检查窗口小部件是否为dijit.form.*
。
例如:
require(["dijit/registry", "dojo/ready", "dojo/parser", "dojox/form/Manager", "dijit/Fieldset", "dijit/form/TextBox"], function (registry, ready) {
ready(function() {
registry.byId("fieldset_a").getDescendants().forEach(function(widget) {
if (widget.declaredClass.match(/^dijit\.form\./i)) {
console.log(widget); // Form widget
}
});
});
});
我还分叉了你的JSFiddle。但我删除了dojo/domReady!
并切换到使用data-dojo-config="parseOnLoad: true"
和dojo/ready
模块的自动解析,因为回调只会在DOM准备就绪时执行 AND 解析了dojo小部件(dijit)。