What is the Dojo equivalent to jQuery .live()?
What is the Dojo equivalent to jQuery .live()?
http://api.jquery.com/live/The only solution I found was to dojo.disconnect the event handlers and re-connect the开发者_如何学编程m once a dynamic piece of markup was added to the page.
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.
精彩评论