2011-02-22 12 views

cevap

14

kullanım ve demo

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

kodu -

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

bkz dojonun orijinal mixin benzeri delegate işlevini yeniden yazar

Yalnızca live olarak değil, jQuery delegate gibi daha genel olarak kullanabilirsiniz, çünkü belge düzeyinde live temel olarak delegate'dur.

+2

Sadece açıklama amacıyla, 'dolandırıcılık' fonksiyonu dojo 1.6 'nın tam sürümde' dojox.NodeList.delegate' gerektirerek kullanılabilir olmalıdır (bu modül biletin sonundaki değişiklik tablosunda görülebilir) cevapta). Merak ediyorsanız 1,6 RC kullanılabilir. http://download.dojotoolkit.org/release-1.6.0rc1/ –

+0

Evet Sunulursa beri 1.6: http://dojotoolkit.org/reference-guide/dojox/NodeList/delegate.html#dojox-nodelist-delegate –

1

Ben

0

Sadece

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

örn kullanmak dojo.behavior benzer işlevi gerçekleştirir düşünüyorum. jquery: $(".className").live(function(){})

dojoda, bu kadar evquilant edilir: Aslında on(document, ".className", function(){})

o jquery.live yaptığı iştir, bu işlevleri yerine getirmek için belgeye olayı bağlamak.