2012-01-10 28 views
1

辞書リストがあり、2番目の子要素にアクセスするには、その要素が何であるかわからずにアクセスしたいと考えています。たとえば:JQuery:未知の子要素の選択

<dl> 
     <dd> 
      <div></div> 
      <div></div> (select this item - however can be any html element) 
     </dd> 
     <dd> 
      <div></div> 
      <div></div> (select this item - however can be any html element) 
     </dd> 
     <dd> 
      <div></div> 
      <div></div> (select this item - however can be any html element) 
     </dd> 
    </dl> 

私が試した...

$('dd').each(function() { 
     $(this + ':nth-child(2)').addClass('hover'); 
    } 

私は要素を見つけようとして別の番号0-2のシリーズでこれを試してみました。 0はすべての最初の子HTMLタグにクラスを置きます。たとえば、

<html class="hover"> 
    <body class="hover"> 
     <div class="hover"> 

...など。私はbtwを望んでいません。 $(これ)が私の個人的なdd要素ではなく、実際にウィンドウをターゲットにしていると私を導く。

誰かが少し光を当てることができれば、私は大いに感謝します。ありがとう。

答えて

1

- 最もjQueryの関数は、要素のリストに喜んで動作します。あなたができるhttp://jsfiddle.net/alnitak/TETbE/

または(@ChrisPrattのおかげで)で

$('dd').children(':nth-child(2)').addClass('hover'); 

作業のデモ:

はちょうど彼らの親の第二子です<dd>のすべて.children()に合わせて、必要なクラスを追加しますセレクタを組み合わせてください:

$('dd > :nth-child(2)').addClass('hover'); 
+0

ありがとうございました。上記の答えは私の実装には少しうまく機能しました。再度、感謝します。 – user311166

+0

真。しかしおそらく、彼は単に質問のポイントを強調するためにコードを編集しただけです。それ以外の場合、最も効率的なメソッドは実際には '$( 'dd>:nth-​​child(2)')です。addClass( 'hover'); –

+0

@ChrisPrattコードが編集され、 '.each()'が他の処理を行っている場合はtrueです。厳密に言えば、セレクタには '> 'が必要です。そうでなければ、親の2番目の子である_any_子孫が強調表示されます。 – Alnitak

3

問題は構文に過ぎません。試してみてください:.each()コールの必要はありません

$('dd').each(function() { 
    $(':nth-child(2)', this).addClass('hover'); 
} 
+0

ありがとうございました。 – user311166