2011-07-26 9 views
3

例:jQueryの.children()()

<ul> 
    <li> 
    <a></a> 
    </li> 
    <li> 
    <a></a> 
    </li> 
</ul> 

私は、リスト項目を取得するために$('ul').children('li').get(0);を使用することができます。 .children('a')を使用してツリーを横断するにはどうすればよいですか?

$('ul').children('li').get(0).children('a');のようなものを試しましたが、うまくいきません。今後の参考のために


  1. 私は.children()を使用しようとしています理由である、aに をダウントラバース以外のliに他のことをやってます。
  2. 指数)は、なぜ.EQ(どちらが

0常にダイナミックではないだろう有利な答えです。今私は次のようなことができる:

_load = function(index) { 
    image_get = thumbs.children('li').eq(index); 

    [...] 

    $(function() { 
    var img = $(new Image()); 
    img 
     .load(function() { 
     [...] 
     } 
     .attr('src', image_get.children('a').attr('href')); 
    }); 
} 

_load(0); 

^^^ WIP。コードは未完成です。

答えて

10

.get()はDOM要素を返します。あなたが好きなjQueryオブジェクトに戻ってそれをラップすることができます:

$($('ul').children('li').get(0)).children('a'); 

しかし、私はあなたが本当にしたいことは.eq()の代わり.get()だと思う:リードとして

$('ul').children('li').eq(0).children('a'); 

編集

親切下記のコメントに指摘されています。

$('ul').children('li').eq(0).children('a');

は、より簡潔に意味的に等価である:単一のセレクタと、上記と同じこと

$('ul > li:first-child > a');

+0

私は上記のスニペットをエミュレートするために '$( 'ul> li:first-child> a')'まで行っていました。 – Reid

+0

@Reidセレクタが同じことをするのは事実です:)しかし、私はgavsiuに '.get()'と '.eq()'の違いを説明することが重要だと思います。彼は私たちが知っているすべてのために、将来(または今)でも '.eq(3)'のようなことをしたいかもしれません。 – Paulpro

+0

これは私が探しているものです。彼らは実際に.index()と.eq()の間にリンクを張るべきです。 – gavsiu

4

理由だけではなく、セレクタでそれをすべて入れて、それはあなたのためのすべての仕事をさせない:

$('ul li:first a') 

これはあなたのサンプルHTMLの最初の<a>タグのjQueryオブジェクトを取得します。

セレクタロジックは次のように動作します。すべてのulタグを検索し、それぞれの最初のliタグを見つけて、最初のliタグのすべてのタグを取得します。結果はさまざまな操作を適用できるjQueryの選択です。ここ

デモ:http://jsfiddle.net/jfriend00/5qZP5/

1

あなたはこの

$('ul li a:first');

http://jsfiddle.net/jasongennaro/yCAT6/

$('ul li a');を行うことができますが、そのリスト内a秒のすべてを返します。

:firstちょうど最初のフィルタ。

関連する問題