2013-10-02 22 views
0

继示例here我试过做同样的事情,但查询不适用于我。Dojo查询点击在切换按钮的工具栏上不起作用

http://jsfiddle.net/qDbd5/

require(["dojo/parser", "dijit/Toolbar", "dijit/form/ToggleButton", "dojo/query", "dojo/dom-class", "dojo/on", "dojo/domReady!"], function (parser, ToolBar, ToggleButton, query, domClass, on) { 
on(query(".dijitToggleButton"), "click", function (e) { 
    query(".dijitToggleButton").forEach(function (node) { 
     console.log('Captured clicked event'); 
     domClass.remove(node, "dijitToggleButtonChecked dijitToggleButtonRtlChecked dijitRtlChecked dijitChecked"); 
    }); 
    domClass.add(this, "dijitToggleButtonChecked dijitToggleButtonRtlChecked dijitRtlChecked dijitChecked"); 
}); 

});

我试图只做一次按钮切换。 为什么点击事件没有被触发?

回答

1

在ready()回调中包装所有内容可解决此问题。

http://jsfiddle.net/cFQGq/

require(["dojo/ready", "dojo/parser", "dijit/Toolbar", "dijit/form/ToggleButton", "dojo/query", "dojo/dom-class", "dojo/on", "dojo/domReady!"], function (ready, parser, ToolBar, ToggleButton, query, domClass, on) { 
    ready(function() { 
     on(query(".dijitToggleButton"), "click", function (e) { 
      query(".dijitToggleButton").forEach(function (node) { 
       console.log('Captured clicked event'); 
       domClass.remove(node, "dijitToggleButtonChecked dijitToggleButtonRtlChecked dijitRtlChecked dijitChecked"); 
      }); 
      domClass.add(this, "dijitToggleButtonChecked dijitToggleButtonRtlChecked dijitRtlChecked dijitChecked"); 
     }); 
    }); 
}); 

如果你看看explanation of domReady!,它提到,这是不足以与Dojo小部件的工作,因为它的DOM加载的,而不是之后的小部件已经完成初始化之后执行。 dojo/ready在部件完成加载后执行回调。

+0

我没有找到一个bug。在你更新的JSFiddle中,如果我点击复制,比点击粘贴和复制HOVER ...它得到切换样式althoug我没有点击它。任何想法为什么? – Alophind

+0

我已经解决了这个错误。 还需要在dijit项目中设置“checked = false”。 – Alophind