In jQuery, you can do this:
$(\'#myElement\').trigger(\'change\');
How do I do that in Dojo?
The dojo on.emit method (1.7+) can be used to trigger an event on a dom node. From the documentation page:
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
});
});
As mention in the last comment, access dijit as pure DOM Object via dom API.
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
});
});
Yes, you can trigger an event on a DOM element in Dojo like this:
dojo.byId("myElement").onChange();
I don't think Dojo has similar functionality, at least as not as far as I know / can find. But you can use code like the following to replicate this functionality:
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);
}
});
A little more verbose, for sure, but you would be able to create your own Dojo version of trigger() with it.
Try it out
I recently stumbled upon Dojo's publish/subscribe mechanism, and I think this is the counterpart to jQuery's bind/trigger.
Links:
PlugD has dojo.trigger
and more: https://github.com/phiggins42/plugd