我想使用 javascript 来获取 dijit 元素类型。例如如果该项目是文本框、组合框、过滤选择等。这是我尝试过的方法,结果返回了 undefined。
HTML
<s:textfield type="text" id="name" required="true" data-dojo-type="dijit/form/ValidationTextBox" />
<s:select id="gender" data-dojo-type="dijit/form/FilteringSelect" />
Javascript
var genderType = dijit.byId('gender').attr('data-dojo-type');
var name= dijit.byId('name').attr('data-dojo-type');
console.log(genderType);
console.log(name);
结果
undefined
undefined
最佳答案
获取它们的最佳方法确实是使用 declaredClass
属性,但是,我不确定依赖它是否是一件好事,因为它大多没有文档记录。
在你的情况下,它是:
require([ "dojo/ready", "dijit/registry" ], function(ready, registry) {
ready(function() {
console.log(registry.byId("gender").get("declaredClass")); // Returns dijit.form.FilteringSelect
});
});
使用data-dojo-type
将不起作用,因为:
- 它不是一个小部件属性,如果您想实现此目的,您应该请求 DOM 属性本身。
- 当 Dojo 解析器解析标记时,
data-dojo-type
属性通常会消失。
关于javascript - Dojo 获取元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740437/