cuo*_*gle 0 html javascript jquery dojo
我有一个使用dojotype
属性的html按钮:
<button id="btnSearchEmployees" dojotype="dijit.form.Button">
Search
</button>
Run Code Online (Sandbox Code Playgroud)
并尝试使用jQuery处理此按钮上的单击事件:
$("#btnSearchEmployees").click(function() {
alert("test");
});
Run Code Online (Sandbox Code Playgroud)
但它不起作用,如果我取出dojotype
属性,它可以正常工作:
<button id="btnSearchEmployees"> Search </button>
Run Code Online (Sandbox Code Playgroud)
我怎么能避免这个?
编辑:这是dojo的变化:
<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>
Run Code Online (Sandbox Code Playgroud)
你应该用
dojo.connect(dijit.byId("btnSearchEmployees"), "onClick", function(){
alert("test");
});
Run Code Online (Sandbox Code Playgroud)
这是因为一旦你使用dojoType(或data-dojo-type).该道场解析器将取代原来的DOM入您的dijit声明的模板.结果可能与标记写入的内容完全不同(如您所示).它为最外面的dom生成一个新的id.所以你实际点击的不是原始的Button元素.然后你必须将它用作"dojo widget",它只能通过dijit.byId检索.
如果您已经使用了dojo框架,它具有您需要的大多数功能.您也不必使用JQuery.