Dojo是否具有与jQuery.trigger()相同的function?

在jQuery中,您可以这样做:

$('#myElement').trigger('change'); 

我如何在Dojo中做到这一点?

我不认为Dojo具有类似的function,至少不像我所知道的那样。 但您可以使用以下代码来复制此function:

 dojo.addOnLoad(function() { var button = dojo.byId("myButton"); dojo.connect(button, "onclick", function() { alert("Clicked!"); }); // IE does things differently if (dojo.isIE) { button.fireEvent("onclick"); } else { // Not IE var event = document.createEvent("HTMLEvents"); event.initEvent("click", false, true); console.debug(event); button.dispatchEvent(event); } }); 

更确切一点,但是你可以使用它创建自己的dojo版本的trigger()。

试试看

dojo on.emit方法(1.7+)可用于触发dom节点上的事件。 从文档页面:

 require(["dojo/on"], function(on){ // register event handler on(target, "mouseup", function(e){ // handle event }); // Send event on.emit(target, "mouseup", { bubbles: true, cancelable: true }); }); 

对于某些dijit小部件和djit特定事件(例如onChange),您可以通过调用事件名称来事实上“触发”。

   

我最近偶然发现了Dojo的发布/订阅机制,我认为这是jQuery的绑定/触发器的对应物。

链接:

  • Dojo事件(v1.6)
  • dojo.publish参考指南

PlugD有dojo.trigger等: https : //github.com/phiggins42/plugd

正如在上一篇评论中提到的,通过dom API访问dijit作为纯DOM对象。

 require(["dojo/dom", 'dojo/on', "dojo/domReady!"], function (dom, on) { //Does not work //registry.byId('myButton') //registry.byId('myButton').domNode //Proper way on.emit(dom.byId('myButton'), "click", { bubbles: true, cancelable: true }); }); 

是的,您可以在Dojo中触发DOM元素上的事件,如下所示:

 dojo.byId("myElement").onChange();