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

Chr*_*man 13 javascript jquery events dojo live

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

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

gbl*_*zex 14

用法演示

dojo.query("body").delegate(selector, eventName, fn);
Run Code Online (Sandbox Code Playgroud)

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

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
    }
});
Run Code Online (Sandbox Code Playgroud)

票#11459

你可以更普遍地使用它来像jQuery delegate,而不仅仅是live因为live它基本上是delegate在文档级别上.

  • 只是为了澄清,`delegate`函数应该在Dojo 1.6的完整版本中可用,需要`dojox.NodeList.delegate`(这个模块可以在答案中链接的票据末尾的变更集中看到).如果您好奇,目前可以使用1.6 RC.http://download.dojotoolkit.org/release-1.6.0rc1/ (2认同)