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 回答