什麼是與jQuery .live()的Dojo等價物?
http://api.jquery.com/live/什麼是與jQuery .live()相同的Dojo?
我發現的唯一解決方案是dojo.disconnect事件處理程序,並重新連接它們,一旦動態標記添加到頁面。
什麼是與jQuery .live()的Dojo等價物?
http://api.jquery.com/live/什麼是與jQuery .live()相同的Dojo?
我發現的唯一解決方案是dojo.disconnect事件處理程序,並重新連接它們,一旦動態標記添加到頁面。
使用和demo
dojo.query("body").delegate(selector, eventName, fn);
代碼 - 重寫道場原混入樣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
}
});
您可以更普遍地使用它,如jQuery delegate
,而不僅僅是live
,因爲live
基本上是文檔級別的delegate
。
我覺得dojo.behavior執行類似的功能
只需使用
on(document, "xxx", function(){})
如。 jQuery中:在道場$(".className").live(function(){})
,它evquilant到:on(document, ".className", function(){})
其實就是jquery.live做什麼,它的事件綁定到文件要實現的功能。
爲了澄清起見,'delegate'函數應該在Dojo 1.6的完整發行版中可用,方法是要求'dojox.NodeList.delegate'(該模塊可以在鏈接票尾的變更集中看到)在答案中)。如果您好奇,1.6 RC現在可用。 http://download.dojotoolkit.org/release-1.6.0rc1/ –
是的,它自1.6以來就可以使用:http://doctor.dojotoolkit.org/reference-guide/dojox/NodeList/delegate.html#dojox-nodelist-delegate –