如何查询dojo中的对象类型?

时间:2012-08-19 00:39:57

标签: javascript dojo dojox.grid

我们可以使用dojo.query来获取基于CSS选择器的某些元素,但是我们如何查询对象类型?
例如,获取页面上的所有TextBox元素,然后使用dojo.connect绑定函数?

1 个答案:

答案 0 :(得分:3)

这并不完全支持,但我认为有两种方法可以实现。

一,弄清楚哪个是TextBox(.dijitTextBox)的唯一类,调用dojo.query('.dijitTextBox'),循环结果dojo.forEach并获取dijit.getEnclosingWidget(domnode)的小部件

var textboxArray = [];
dojo.forEach(dojo.query('.dijitTextBox'), function(domnode) {
  textboxArray.push(dijit.getEnclosingWidget(domnode));
});

或者两个,循环dijit.registry._hash,测试declaredClass,如果它是dijit.form.TextBox - 连接。

var textboxArray = dojo.filter(dijit.registry._hash, function(widget) {
  return widget.declaredClass && widget.declaredClass == 'dijit.form.TextBox';
})

根据您的设置,选择效率最高的设置。后者通常是最好的 - 除非你的页面中有100个小部件。第一个必须xpath所有页面元素。尽管如此,请记住dojo.query将第二个参数作为'parentNode'