Что такое Dojo эквивалент jQuery.live()?

Что такое Dojo эквивалент jQuery.live()?
http://api.jquery.com/live/

Единственное решение, которое я нашел, это dojo. Отключить обработчики событий и снова подключить их, как только динамическая часть разметки была добавлена ​​на страницу.

Ответы

Ответ 1

и демо

dojo.query("body").delegate(selector, eventName, fn);

code - перезаписывает оригинальную функцию типа delegate, подобную mixin, dojo

dojo.provide("dojox.NodeList.delegate");
dojo.require("dojo.NodeList-traverse");
dojo.extend(dojo.NodeList, {
    delegate: function ( selector,eventName, fn) {
        return this.connect(eventName, function (evt) {
            var closest = dojo.query(evt.target).closest(selector, this);
            if (closest.length) {
                fn.call(closest[0], evt);
            }
        }); //dojo.NodeList
    }
});

см. билет # 11459

Вы можете использовать это в целом как jQuery delegate, а не только как live, потому что live в основном delegate на уровне документа.

Ответ 2

Я думаю, что dojo.Behavior выполняет аналогичную функцию

Ответ 3

Просто используйте

on(document, "xxx", function(){})

например. в jquery: $(".className").live(function(){})

в dojo, он эквивалентен: on(document, ".className", function(){})

Фактически это то, что делает jquery.live, оно связывает событие с документом для достижения этой функции.