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();