2014-05-19 111 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解析器解析標記時,屬性通常會消失。