2011-12-16 7 views
24

jQueryで最初に<p>要素を選択するには、<div>?最初pは常にdivの直接の子になる場合jQueryの最初の型セレクタ?

$(yourDiv).find("p").eq(0); 

、あなたがchildren代わりのfind使用することができます:あなたと仮定すると

<div> 
    <h1>heading</h1> 
    <p>How do I select this element with jQuery?</p> 
    <p>Another paragraph</p> 
</div> 

答えて

52

はすでにdivへの参照を持っています。

いくつかの選択肢が含まれます:eq方法は、常にこれを行うための最速の方法となること

$(yourDiv).find("p:eq(0)"); //Slower than the `.eq` method 
$(yourDiv).find("p:first"); 
$(yourDiv).find("p").first() //Just an alias for `.eq(0)` 

注意を。

enter image description here

+0

ニースを説明する例であり、これは説得力になります、ありがとう! –

+1

問題はありません。私が助けることができてうれしいです:)あなたが興味があるなら、もう一つの選択肢は ':lt(1)'でしょう。私は、 '.eq'メソッドも遅くなることはほとんど確信していますが、同じことを達成するもう一つの方法です。 –

+0

うわー、それは大きな違いです。私はなぜjQueryが許可するのか理解していません。バックグラウンドでは、nth-child(1)に変換する必要があります。 http://jsperf.com/jq-first-vs-eq/3これは行われていない理由はありますか? – rkw

6
$('div p:first') 

答えはあまりにもだった:ここeq方法、:eqセレクタのquick comparison:firstセレクタ(それはeq(0)の単なる別名なので、私はfirst方法を気にしませんでした)の結果ですこの無駄な文章なしで投稿するのが短くなります。

これは間違いなく低速のオプションです。 Jameのスピードテストを見た後、jQueryセレクタはCSSセレクタをピギーバックすると最も効果的です。

+0

@JamesAllardiceこれは、両方とも1つの要素に一致するため、.First()と同じです。それが望ましい効果であるかどうかは、Web_Designerの課題に左右されます。 – Colin

+0

@Farrell - それは '.first'と':first'と ':eq(0)'と ':lt(1)'(jQueryで同じものを書く方法が非常に多い)それは束の断食される必要があります。 –

+0

@rkw - ':nth-​​child'は同等ではないので、この場合は動作しません。 Sizzleの代わりにネイティブの 'querySelector'と' querySelectorAll'メソッドを使うことができるので、特に現代のブラウザでは、セレクタがCSSに相当するときにセレクタがうまくいくと思っています。 –

0
$('div p').first() 

おもう。

2

$( "div p")。first();

または$( 'div p:first');

参考:http://api.jquery.com/first/

最初の()は、単一の要素にマッチすることに注意してください、:第一子のセレクタは、複数を一致させることができます:それぞれの親のための1。

1

ほとんどの回答は(あなたの投稿のタイトルから)知っています。 jQueryに:first-of-typeというセレクタがあります。そのように、見つけると自動的に最初のpタグにクラスを追加するためにそれを使用します。

$("div p:first-of-type").addClass('someClass'); 
+0

:first-of-typeと:last-of-typeはjQuery 1.9以降で利用可能です。 – Bell

-1

これは@Denverは指摘しており、変更として上記のコードはdivの中で最初の段落を見つけ

$("div p:first-of-type").css("font-size: 10px"); 

動作するはずですそのfonts-sizeここ

10pxにはさらにおよそjQuery first-of-type selector

+0

いいえ、そうしてはいけません。この回答は間違った要素を選択するために変更したことを除いて、[Devner 2年半前に与えられたもの](http://stackoverflow.com/a/16381687/19068)と基本的に同じです。 – Quentin

+0

合意しました!コードを編集しました。ありがとう – Packer

関連する問題