jQueryで[0]を使用するのではなく、最初の要素を取得するにはどうすればよいですか?


91

jQueryは初めてですが、これがばかげた質問である場合はお詫びします。

私がそれを使用してidを使用する要素を見つけると、常に1つの一致があることを知っており、それにアクセスするためにインデックス[0]を使用します。これを行うより良い方法はありますか?例えば

var gridHeader = $("#grid_GridHeader")[0];

回答:


98

使用することもできます.get(0)が、IDで検出された要素を使用する必要はなく、常に一意である必要あります。これが例の見落としであることを願っています...これが実際のページに当てはまる場合は、IDが一意になるように修正して、代わりにクラス(または別の属性)を使用する必要があります。

.get()(のように[0])jQueryオブジェクトを使用する場合、.eq(0)または.first()代わりにDOM要素を取得します:)


17
それを除いて$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM

9
@BrunoLM-DOM要素が必要な場合はdocument.getElementById('id')、それを捨てるためだけにjQueryオブジェクトを作成しないでください...セレクタエンジンからオブジェクトラッパーまで、それは非常に無駄です。正当な理由がないため、やり過ぎです:)
Nickクレイバー

ニック私も同意します。多分私はすべてにjqueryを使用するだけで、かなりばかげていました。
Rubans 2010年

2
@NickCraver-ありがとうございます。私はたくさんのdocument.getElementById('id')と交換しただけですが$('#id')[0]、は好きではありませんでした[0]。無駄についてのあなたのコメントは私に定義することを考えさせました、$0 = function(id){return document.getElementById(id);}そして今、私は$0('id')よりよく好きです。文字数はと同じですが$('#id')、それができればいいのにと思います$#('id')
Bruno Bronosky 2015

2
空の結果セットから偽の値を返すこれらのメソッドのバリアントがあったらいいのにと思います。
スティーブンM.ハリス

25

$("#grid_GridHeader:first") 同様に動作します。


3
これは、ここで問題を処理するための最良の方法だと思います。.eq(0)とは対照的に、よく読みます
デイブグレゴリー

18

最初の方法を使用できます。

$('li').first()

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

ところで私はニック・クレイバーに同意します-document.getElementById()を使用してください...


1
要素が見つからない場合、これは空の配列を返します。に[]評価されるように、論理ステートメントでの使用には注意してくださいtrue
アシュレイ

4

要素は1つだけであるという前提で:

 $("#grid_GridHeader")[0]
 $("#grid_GridHeader").get(0)
 $("#grid_GridHeader").get()

...すべて同等であり、単一の基本要素を返します。

jQueryのソースコードから、内部get(0)的には基本的に[0]アプローチと同じことを行うことがわかります。

 // Return just the object
 ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );

最初のアイテムを取得していないように見えるget()を除いて、他のすべての機能に感謝します。
Rubans 2010年

実際、私はニック・クレイブの返答からそれがうまくいかない理由を見ることができます
Rubans


3

最初のセレクターを使用できます。

var header = $('.header:first')

単一の要素を持つ配列を返します。
Nitin 2016

-3

あなたはこのように試すことができます:
yourArray.shift()

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.