与jQuery .live()等效的Dojo是什么?

时间:2011-02-22 20:26:23

标签: javascript jquery events dojo live

与jQuery .live()等效的Dojo是什么? http://api.jquery.com/live/

我找到的唯一解决方案是dojo.disconnect事件处理程序,并在向页面添加动态标记后重新连接它们。

3 个答案:

答案 0 :(得分:14)

用法 demo

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

代码 - 重写dojo的原始mixin-like delegate函数

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
    }
});

请参阅ticket#11459

你可以更普遍地使用这个jQuery delegate,而不仅仅是live,因为live基本上是文档级别的delegate

答案 1 :(得分:1)

我认为dojo.behavior执行类似的功能

答案 2 :(得分:0)

只需使用

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

例如。在jquery中:$(".className").live(function(){})

在道场,它是:on(document, ".className", function(){})

实际上这就是jquery.live所做的事情,它将事件绑定到文档以实现该功能。