2014-05-19 71 views
0

我想用JavaScript来获取dijit元素类型。例如如果该项目是文本框,组合框,过滤选择等。这是我试过的,并导致undefined被返回。Dojo获取元素类型

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 
+0

你能提供jsfiddle吗? – IProblemFactory

+1

试试这种方式:'var yourWidgetType = dojo.filter(dijit.registry._hash,function(widget){ return widget.declaredClass; })' – user3241019

+0

@ user3241019它没有返回任何结果 – devdar

回答

1

,最好的办法,让他们为我通过使用declaredClass财产,但是,我不确定是否依赖它是一件好事,因为它主要是无证的。

你的情况,那就是:

require([ "dojo/ready", "dijit/registry" ], function(ready, registry) { 
    ready(function() { 
     console.log(registry.byId("gender").get("declaredClass")); // Returns dijit.form.FilteringSelect 
    }); 
}); 

例子:

使用不会起作用,因为:

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