0

ここの例に従って、同じことを試みましたが、クエリが機能しません。

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つのボタンだけを切り替えようとしています。クリックイベントがトリガーされないのはなぜですか?

4

1 に答える 1

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

domReady !の説明を見ると、ウィジェットの初期化が完了した後ではなく、DOM がロードされた後に実行されるため、Dojo ウィジェットを操作するには不十分であることが言及されています。dojo/ready は、ウィジェットのロードが完了した後にコールバックを実行します。

于 2013-10-02T17:30:48.120 に答える