В jQuery вы можете сделать это:
$('#myElement').trigger('change');
Как это сделать в Dojo?
В jQuery вы можете сделать это:
$('#myElement').trigger('change');
Как это сделать в Dojo?
Я не думаю, что 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().
Метод dojo on.emit (1.7+) может использоваться для запуска события на dom node. На странице документации:
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 и конкретных событий (например, 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>
Недавно я наткнулся на механизм публикации/подписки Dojo, и я думаю, что это аналог jQuery bind/trigger.
Ссылки:
PlugD имеет dojo.trigger
и больше: https://github.com/phiggins42/plugd
Как упоминается в последнем комментарии, вы можете использовать dijit как чистый объект DOM через 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
});
});
Да, вы можете инициировать событие в элементе DOM в Dojo следующим образом:
dojo.byId("myElement").onChange();