JQuery'de [0] kullanmak yerine ilk öğeyi nasıl edinebilirim?


95

JQuery'de yeniyim, bu aptalca bir soruysa özür dilerim.

Bunu kullandığımda id kullanarak bir eleman bulduğumda, her zaman bir eşleşme olduğunu biliyorum ve ona erişmek için [0] dizinini kullanacağım. Bunu yapmanın daha iyi bir yolu var mı? Örneğin

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

Yanıtlar:


101

Siz de kullanabilirsiniz .get(0), ancak ... bunu kimliğe göre bulunan ve her zaman benzersiz olması gereken bir öğeyle yapmanız gerekmez . Bunun örnekte sadece bir gözetim olduğunu umuyorum ... gerçek sayfanızdaki durum buysa, kimliğinizin benzersiz olması için düzeltmeniz ve bunun yerine bir sınıf (veya başka bir özellik) kullanmanız gerekir.

.get()(gibi [0]) bir jQuery nesnesinin .eq(0)veya .first()bunun yerine kullanılmasını istiyorsanız, DOM öğesini alır :)


17
Bunun dışında$("#id") /* jQuery object */ != $("#id").get(0) /* DOM Object */
BrunoLM

9
@BrunoLM - Bir DOM öğesi istiyorsanız, document.getElementById('id')onu atmak için bir jQuery nesnesi oluşturmayın ... bu, seçici motordan nesne sarmalayıcısına kadar muazzam bir savurganlıktır, bu, iyi bir neden olmadan aşırı derecede aşırıdır :)
Nick Craver

Nick Katılıyorum, belki de her şey için jquery kullanarak oldukça aptal davranıyordum.
Rubans

2
@NickCraver - Bunun için teşekkürler. Sadece bir demet yerini document.getElementById('id')ile $('#id')[0]ancak sevmezdi [0]. Savurganlık hakkındaki yorumunuz beni tanımlamayı düşündürdü $0 = function(id){return document.getElementById(id);}ve şimdi $0('id')daha çok seviyorum . Aynı sayıda karakter $('#id'), keşke olabilseydi$#('id')
Bruno Bronosky

2
Bu yöntemlerin boş bir sonuç kümesinden yanlış bir değer döndüren bir çeşidi olsaydı.
Stephen M. Harris

27

$("#grid_GridHeader:first") aynı zamanda çalışır.


3
Sorununuzu burada çözmenin en iyi yolunun bu olduğunu düşünüyorum. .Eq (0) yerine iyi okuyor
Dave Gregory

O ise (1000 satırdan oluşan bir tablo varken örneğin gerek hepsi bir jquery nesne oluşturmak için) çok performans nedenleriyle en iyi yolu
Alex

18

İlk yöntemi kullanabilirsiniz:

$('li').first()

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

btw Nick Craver'a katılıyorum - document.getElementById () kullanın ...


1
Bu, öğe bulunmazsa boş bir dizi döndürür. Olarak mantık tablolara kullanırken dikkatli olun []arzusu eval true.
Ashley

4

Tek bir unsur olduğu varsayımıyla:

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

... hepsi eşdeğerdir ve temeldeki tek öğeyi döndürür.

JQuery kaynak kodundan, get(0)kapakların altında aslında [0]yaklaşımla aynı şeyi yaptığını görebilirsiniz :

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

İlk öğeyi almayan get () dışında çalışan her şey için teşekkürler.
Rubans

Aslında bu konu neden çalışmaz Nick istemek en cevapta görebileceğiniz
RUBANS


3

İlk seçiciyi kullanabilirsiniz.

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

Tek öğeli bir dizi döndürür.
Nitin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.