2011-02-22 32 views

Trả lời

14

sử dụngdemo

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

mã - viết lại bản gốc mixin giống như delegate chức năng của võ đường

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 
    } 
}); 

thấy ticket#11459

Bạn có thể sử dụng điều này thường giống như jQuery delegate, không chỉ là live, bởi vì live về cơ bản là delegate ở cấp tài liệu.

+2

Chỉ vì mục đích làm rõ, chức năng 'delegate' sẽ có sẵn trong bản phát hành đầy đủ của Dojo 1.6 bằng cách yêu cầu' dojox.NodeList.delegate' (mô-đun này có thể thấy trong changeset ở cuối vé được liên kết trong câu trả lời). 1.6 RC hiện có sẵn nếu bạn tò mò. http://download.dojotoolkit.org/release-1.6.0rc1/ –

+0

Có sẵn từ 1.6: http://dojotoolkit.org/reference-guide/dojox/NodeList/delegate.html#dojox-nodelist-delegate –

1

Tôi nghĩ dojo.behavior thực hiện chức năng tương tự

0

Chỉ cần sử dụng

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

ví dụ. trong jquery: $(".className").live(function(){})

ở võ đường, nó được evquilant tới: on(document, ".className", function(){})

Trên thực tế đó là những gì jquery.live không, nó ràng buộc sự kiện để các tài liệu để đạt được các chức năng.

Các vấn đề liên quan