What is the Dojo equivalent to jQuery .live()?

心不动则不痛 提交于 2019-11-28 10:56:31

usage and demo

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

code - rewrites the original mixin-like delegate function of 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
    }
});

see ticket#11459

You can use this more generally like jQuery delegate, not just as live, because live is basically a delegate on the document level.

I think dojo.behavior performs similar function

Just use

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

eg. in jquery: $(".className").live(function(){})

in dojo, it is evquilant to : on(document, ".className", function(){})

Actually that is what jquery.live does, it bind the event to the document to achieve the function.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!