与jQuery .live()等效的Dojo是什么? http://api.jquery.com/live/
我找到的唯一解决方案是dojo.disconnect事件处理程序,并在向页面添加动态标记后重新连接它们。
答案 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所做的事情,它将事件绑定到文档以实现该功能。