2010-12-03 3 views
0

jqueryのDelegateの機能について少し混乱しています。jQueryデリゲート

ピッカーと呼ばれる変数がある場合。

この変数には、 のdivが含まれています。このdivには、未知のスパンが含まれています。

私はすべての単一スパンでいくつかのクリックハンドラを設定することを検討していますピッカーディビジョン。

これを行う最善の方法を委任していますか?

もしそうなら、どうすればいいですか?

答えて

4

だから私は仮定していピッカーは、このようなものになります。

var picker = $("div.someDiv"); 

をそして、あなたは.delegate()を使用してdiv.someDivの子ノードであるすべてのspan要素にハンドラをクリック添付する。ここで

は、私はそれについて移動したい方法は次のとおりです。ほとんどのDOMイベントバブル、または伝播するという事実を利用することによって

picker.delegate("span", "click", function(eventObj) { 
    // do what you want 
}); 

.delegate()作品。 .delegate()は、この点に関して.live()と非常に似ています。 .delegate()が異なる場合は、ドキュメントルートにハンドラを追加するだけでなく、イベントが完全に泡立てられたときにハンドラを起動するのではなく、$()に渡す要素にイベントを添付してから、バブルアップするイベントを監視しますその要素の子供たちから。

+0

恐ろしい答え、ありがとう – Hailwood

2

うん、あなたは好きなことを行うことができるはず:

picker.delegate("span", "click", function() { 
    // do something to $(this) here! 
}); 
+0

私はアレックスの回答を受け入れました。デリゲートの仕組みについての説明があります。 – Hailwood

0

$("#picker span").click(function(){ 
    //I was clicked 
}); 

が悪いのか?

+0

代表団には何が問題なのですか? – user113716

関連する問題