0

dojotype属性を使用したhtmlボタンがあります:

<button id="btnSearchEmployees" dojotype="dijit.form.Button">
                        Search
                    </button>

そして、jQueryを使用してこのボタンのクリックイベントを処理しようとしています。

$("#btnSearchEmployees").click(function() {
    alert("test");
});

しかし、それは機能していません。dojotype属性を削除すると、正常に機能します。

 <button id="btnSearchEmployees"> Search </button>

どうすればこれを回避できますか?

編集:これが道場の変更点です:

<span class="dijit dijitReset dijitInline dijitButton" role="presentation" style="width: 70px;" widgetid="btnSearchEmployee">
    <span class="dijitReset dijitInline dijitButtonNode" data-dojo-attach-event="ondijitclick:_onClick" role="presentation">
        <span class="dijitReset dijitStretch dijitButtonContents" data-dojo-attach-point="titleNode,focusNode" role="button" aria-labelledby="btnSearchEmployee_label" tabindex="0" id="btnSearchEmployee">
            <span class="dijitReset dijitInline dijitIcon dijitNoIcon" data-dojo-attach-point="iconNode"></span><span class="dijitReset dijitToggleButtonIconChar">?</span>
            <span class="dijitReset dijitInline dijitButtonText" id="btnSearchEmployee_label" data-dojo-attach-point="containerNode">Search</span>
        </span>
    </span>
    <input type="button" value="" class="dijitOffScreen" tabindex="-1" role="presentation" data-dojo-attach-point="valueNode">
</span>
4

1 に答える 1

5

あなたは使用する必要があります

dojo.connect(dijit.byId("btnSearchEmployees"), "onClick", function(){
    alert("test");
});

これは、一度dojoType(またはdata-dojo-type)を使用するためです。dojoパーサーは、元のdomをdijitが宣言するテンプレートに置き換えます。結果は、マークアップが書き​​込む内容とは完全に異なる場合があります(あなたが示したように)。最も外側のdomの新しいIDを生成します。したがって、実際にクリックするのは元のButton要素ではありません。次に、それを「dojoウィジェット」として使用する必要があります。これはdijit.byIdを介してのみ取得できます。

すでにdojoフレームワークを使用している場合は、必要なほとんどの機能があります。JQueryも使用する必要はありません。

于 2012-11-27T12:01:36.820 に答える