在jQuery中,您可以这样做:
$('#myElement').trigger('change');
我如何在Dojo中做到这一点?
hsgswve41#
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 }); });
cunj1qz12#
我认为Dojo没有类似的功能,至少据我所知/所能找到的没有,但是您可以使用如下代码来复制此功能:
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()。Try it out
idfiyjo83#
对于某些dijit小部件和djit特定事件(如onChange),您可以通过调用事件名称来实际“触发”。
<input id="numberBox" data-dojo-type="dijit.form.NumberTextBox" /> <script> dojo.connect( dijit.byId('numberBox'), "onChange", function ( event ) { dijit.byId('numberBox').set('value', 12345 ); }); dijit.byId('numberBox').onChange(); </script>
guykilcj4#
我最近偶然发现了Dojo的发布/订阅机制,我认为这是jQuery的绑定/触发器的对应物。链接:
dojo.publish
hjzp0vay5#
PlugD具有dojo.trigger和更多:https://github.com/phiggins42/plugd
dojo.trigger
368yc8dk6#
是的,您可以在Dojo中的DOM元素上触发一个事件,如下所示:
dojo.byId("myElement").onChange();
vecaoik17#
正如上一条评论中提到的,通过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 }); });
7条答案
按热度按时间hsgswve41#
dojo on.emit方法(1. 7+)可以用来触发DOM节点上的事件。从文档页面:
cunj1qz12#
我认为Dojo没有类似的功能,至少据我所知/所能找到的没有,但是您可以使用如下代码来复制此功能:
当然有点冗长,但是您可以使用它创建自己的Dojo版本的trigger()。
Try it out
idfiyjo83#
对于某些dijit小部件和djit特定事件(如onChange),您可以通过调用事件名称来实际“触发”。
guykilcj4#
我最近偶然发现了Dojo的发布/订阅机制,我认为这是jQuery的绑定/触发器的对应物。
链接:
dojo.publish
reference guidehjzp0vay5#
PlugD具有
dojo.trigger
和更多:https://github.com/phiggins42/plugd368yc8dk6#
是的,您可以在Dojo中的DOM元素上触发一个事件,如下所示:
vecaoik17#
正如上一条评论中提到的,通过dom API将dijit作为纯DOM对象访问。