2011-02-22 12 views

答えて

14

使用demo

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

コード -

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

参照道場のオリジナルミックスイン状 delegate機能を書き換えます

liveは基本的にドキュメントレベルでdelegateなので、より一般的にはliveのように、jQuery delegateのように使用できます。

+2

'delegate'関数は' dojox.NodeList.delegate'を要求することでDojo 1.6の完全なリリースで利用可能になるはずです(このモジュールはリンクされたチケットの最後にチェンジセットで見ることができます答えに)。あなたが興味があるなら、現在1.6 RCが利用可能です。 http://download.dojotoolkit.org/release-1.6.0rc1/ –

+0

はい、1.6以降利用可能です:http://dojotoolkit.org/reference-guide/dojox/NodeList/delegate.html#dojox-nodelist-delegate –

1

私はdojo.behaviorは、同様の機能

0

ちょうど

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

などを使用して行いだと思います。 jqueryの中で:実はそれはjquery.liveが、それが機能を達成するために、文書にイベントをバインドしないものですon(document, ".className", function(){})

:道場で$(".className").live(function(){})

、にevquilantです。

関連する問題