0

使用dojo 1.9,我试图访问一个复选框的值,这与文档中的示例不同:

require(["dijit/form/CheckBox", "dojo/domReady!"], function(CheckBox){ 
    var checkBox = new CheckBox({ 
        name: "checkBox", 
        value: "agreed", 
        checked: false, 
        onChange: function(b){ alert('onChange called with parameter = ' + b + ', and     widget value = ' + this.get('value') ); } 
    }, "checkBox"); 
}); 

但通过将 onChange 事件移动到:

query('#checkBox').on('change', function(){ 
    var value = query(this).attr('value'); 
}); 

或任何类似的东西。我只想从 on() 方法访问它。但我每次都得到相同的值 - 复选框被选中。有任何想法吗?

4

2 回答 2

2

我又犯了同样的错误——应该是

registry.byId('checkBox').on('change', function(){ 
    var value = this.value; 
});
于 2013-08-26T11:43:26.640 回答
0

dojo/query 返回小部件的普通 dom 节点,因此,我们不能将“on”事件处理程序直接附加到查询结果。正如你所说,我们可以使用 registry.byId(...)

另外,我给个建议,查询会返回更多的dom节点。

array.forEach(dojo.query('.classname'),function(node){
  dijit.getEnclosingWidget(node).on('change',function(){
    var value = this.value;
    console.info(value);
  });
});

dijit.getEnclosureWidget(domNode) - 将给出提到的“domNode”的直接父窗口小部件节点

于 2013-08-26T19:39:07.543 回答