In jQuery, you can do this:
$('#myElement').trigger('change');
How do I do that in Dojo?
In jQuery, you can do this:
$('#myElement').trigger('change');
How do I do that in Dojo?
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
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
});
});
For certain dijit widgets and djit specific events ( such as onChange ), you can de-facto 'trigger' by calling the event name.
<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>
I recently stumbled upon Dojo's publish/subscribe mechanism, and I think this is the counterpart to jQuery's bind/trigger.
Links:
dojo.publish
reference guidePlugD has dojo.trigger
and more: https://github.com/phiggins42/plugd
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();