Есть ли в Dojo эквивалент jQuery.trigger ()? - PullRequest
11 голосов
/ 15 февраля 2011

В jQuery вы можете сделать это:

$('#myElement').trigger('change');

Как мне это сделать в Dojo?

Ответы [ 7 ]

36 голосов
/ 12 октября 2012

Метод 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
    });
});
6 голосов
/ 16 февраля 2011

Я не думаю, что 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 с его помощью.*

Попробуйте

4 голосов
/ 16 февраля 2012

Для определенных виджетов dijit и определенных событий djit (например, onChange) вы можете де-факто вызвать триггер, вызвав имя события.

2 голосов
/ 17 августа 2011

Я недавно наткнулся на механизм публикации / подписки в Dojo, и я думаю, что это аналог jQuery-привязки / триггера.

Ссылки:

1 голос
/ 24 апреля 2011

PlugD имеет dojo.trigger и более: https://github.com/phiggins42/plugd

0 голосов
/ 18 января 2018

Да, вы можете вызвать событие для элемента DOM в Dojo следующим образом:

dojo.byId("myElement").onChange();
0 голосов
/ 22 августа 2016

Как упоминалось в последнем комментарии, доступ к 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
        });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...