Что такое Dojo эквивалентно jQuery .live ()? - PullRequest
13 голосов
/ 22 февраля 2011

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

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

Ответы [ 3 ]

14 голосов
/ 22 февраля 2011

использование и демо

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

code - переписывает оригинальную микшиноподобную delegate функцию 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 на уровне документа.

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

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

0 голосов
/ 10 мая 2013

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

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

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

в додзё, это прекрасно: on(document, ".className", function(){})

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

...