2012-01-17 14 views
2

それぞれの最初のYouTube動画を取得してjQueryを使用して配列に格納するにはどうすればよいですか?Hrefを取得して配列jQueryに格納

HTML:

<div id="one"> 
    <ul class="thumbs"> 
     <li><a href="http://www.youtube.com/watch?v=-dzpkn29_vY"></a></li> 
     <li><a href="http://www.youtube.com/watch?v=xFCRMonf7lI"></a></li> 
    </ul> 
</div> 
<div id="two"> 
    <ul class="thumbs"> 
     <li><a href="http://www.youtube.com/watch?v=UBTUAHGpQqE"></a></li> 
     <li><a href="http://www.youtube.com/watch?v=mTkPfjSXFpo"></a></li> 
    </ul> 
</div> 

私はリンクを得ることはようなものになるだろうと思う:

$('.thumbs li:first-child').attr("href"); 

しかし、どのように私はそれらの両方を取得し、配列にそれらを格納できますか?

答えて

9
var arr = $('.thumbs > li:first-child > a').map(function() { 
    return this.href; 
}).toArray(); 
+2

Awww。私はそれが今日私が見ている最もエレガントなソリューションの1つだと思います。帽子、男! – vzwick

0
var arr = []; 
$('#one, #two').find('.thumbs').each(function (index, element) { 
    arr[arr.length] = $(this).find('a[href^="http://www.youtube.com/watch?v="]').eq(0).attr('href'); 
}); 

検索のこのタイプを使用してのボーナスはユーチューブへのリンクだけの要素がアレイに追加されることです。

arr配列は次のようになります:#one#two要素で始まる

["http://www.youtube.com/watch?v=-dzpkn29_vY", "http://www.youtube.com/watch?v=UBTUAHGpQqE"] 

注意

は(あなたが .thumbsで始めることができます)しかし、これは中に(それらの要素のみに検索を制限必要はありませんDOM内に他の .thumbs要素がある場合)。

ここはデモです:http://jsfiddle.net/fDQ2v/

+1

ええ、申し訳ありませんが、それはちょっと疑問ですが、 '.push()'ではなくarr [arr.length]を使う理由がありますか?私は、各反復で追加のプロパティへのアクセスがパフォーマンスに悪影響を与えると思いますか? – vzwick

+0

'.push'を呼び出すことは、不要な関数呼び出しです。 'arr [arr.length]'を使うと古いブラウザーでスピードアップします(新しいブラウザーでは '.push'は実際に高速ですが、古いブラウザーは新しいものよりも助けが必要です)。まったく愚かな質問ではありません。 – Jasper

+0

少なくとも、クローム・ナイトリーを実行しているときは、測定可能な差はまったくありません。 Firefoxは '.push()'をより速く処理するように見えます。どのような場合でも効果はごくわずかです。 http://jsperf.com/arr-push-vs-arr-arr-length http://jsperf.com/push-vs-array-array-length **編集:**あ、旧式のブラウザ。 – vzwick

関連する問題