Dojo获取元素类型

Dojo get element type

本文关键字:类型 元素 获取 Dojo      更新时间:2023-09-26

我想使用javascript来获得dijit元素类型。例如,如果条目是一个文本框、组合框、筛选框等等。以下是我尝试过的,结果返回undefined

<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
    });
});

示例:http://jsfiddle.net/6RRUK/

使用data-dojo-type将无法工作,因为:

  1. 这不是一个小部件属性,如果你想实现这一点,你应该请求DOM属性本身。
  2. data-dojo-type属性通常在Dojo解析器解析标记时消失。