2012-05-04 16 views
1

私はこの要素をDOM内に持っています:<div id="main" class="main"></div>。 $( 'main')と$( 'main:first')で要素を選択するのに違いはありますか?jQueryセレクタの相違点

EDIT: これは、この要素がクラス名が "main"の唯一の要素であることを前提としています。

答えて

3

EDIT:これは、この要素がクラス名が "main"の唯一の要素であることを前提としています。

$('#main')$('.main')で選択すると、あなたに同じ結果を返すだけ.mainなどがあるので、違いはありません。

パフォーマンス面では、ハイファイアニメーションや巨大なDOM操作を使用しない限り、無視できます。

$('#main') - 高速、すっきりと

$('.main:first')

効率的 - クラスセレクタIDセレクタと :firstフィルタに比べて遅い遅いです。

- >あなたは:firstを必要としません。ちょうど$('.main')があなたの望む結果を返します。

その他のオプション -

$('.main') - IDセレクターよりも遅い

$('div.main')からhttp://jsperf.com/jquery-class-vs-id-v2

- ちょうど$(」。メイン)

証明をよりまだ良いIDセレクターよりも遅いです

+0

クラスセレクターはかなり速いです。 – BoltClock

+0

@BoltClockはい、IDセレクタほど高速ではありませんhttp://jsperf.com/jquery-class-vs-id-v2 –

1

はい。その要素がクラスmainの最初の要素でない場合、その要素は選択されません。

1

$( "#main")はIDを使用しているため、おそらく少し速くなります。

また、元の要素の前に.mainクラスを持つ別の要素を追加すると、失敗します。

0

IDセレクタは、jQueryがDOM IDを一意にする(ビューあたり1つのみを意味する)必要がありますが、複数のメインクラスを持つことができるため、より強力です。