2011-07-10 10 views
4

"パネル"クラスのすべての現在および将来のdivのすべての最初のアンカータグにclickイベントを委任しようとしています。私はそのようなことをした:jQueryデリゲートセレクターの問題

$('#panel').delegate('.panels a:first', 'click', function(event) [...] 

しかし、それは動作しません。これはイベントを1つの最初の ".panels"にのみバインドします。何かヒント?

答えて

3

aの要素が最初のアンカーではなく、「パネル」div(いずれの場合には最初のアンカー)である場合を除き、これをセレクタで行うことはできません。 :first-childを使用できます)。

クリックしたアンカーがdivの最初ののアンカーであることを確認するには、おそらくハンドラ自体にロジックを入れなければなりません。これらの線に沿って何か:

$("#panel").delegate(".panels a", "click", function() { 
    if ($(this).siblings("a").andSelf()[0] === this) { 
    // It's the first anchor in its parent 
    } 
    return false; 
}); 

Live example

siblingsandSelf両方の保証がthis[0]番目の要素作品であればそのチェック、ドキュメント順にjQueryオブジェクト内の配列を維持するために動作します。

+0

はい、それはそう、常に「パネル」内の最初の子です。あなたは速かったので、私はあなたの答えを正しいとマークします。 :) – ThomK

3

:first-child:firstは1つの要素のみを返します。あなたが今何をしている

$('.panels a').get(0)

ソースに等しいです:最初に、子供は十分です:
http://api.jquery.com/first-selector/

+0

ありがとう。から変更する:最初の:最初の子作品。 :) – ThomK

+0

聞いて嬉しいです:) –