2009-12-23 21 views
12

öğesinde bir dizi öğe alıyorum Sorun şu ki, bir tablonun var, ancak yalnızca ilk dizinden son dizine kadar satırların bir alt kümesini istiyorum. Ben böyle yapabileceğini düşündü: Bir jQuery seçici

$('table tr:gt(2):lt(5)'); 

Ben sadece satırları 3. ve 4. verecek düşünce ama size bundan daha vererek biter. Seçiciye sadece # 3 ve # 4 satırlarını seçmesini nasıl söyleyebilirim?

+0

Ayrıca bakınız [.slice()] (http://api.jquery.com/slice/) –

cevap

19

Sen çok yakınsın, ancak seçicideki sorunun :lt(5) filtredir. Fark lt() filtre uygulandığı zaman, ilk üç element zaten (gt() filtresi tarafından) kümesinden çıkarıldı olmasıdır

$('table tr:gt(2):lt(2)'); 

:

Sen gibi bir şey istemez. Yani bu, 3. ve 8. elemanlar (sekizinci sırada) yerine 3. sıraya geçecek.

+0

Mükemmel! Bu beklendiği gibi çalışır. Bunu açıkladığın için teşekkürler. (': (2,4)' de tablo tr') veya bir eklenti var – Bob

+0

Ben o $ benzeyebilecek böylece bir aralığı seçiciyi eklemek için bir özellik isteği gönderebilirsiniz yan soru olarak varsayalım Bu işlev zaten yerine getiriliyor mu? – Bob

+1

@Bob, @DaveWard'ın yanıtladığı gibi 'slice' kullanmayı gerçekten göz önünde bulundurmalısınız. Çok daha okunabilir ve beklediğiniz şekilde çalışacaktır. Ayrıca, bu şekilde şeyler yaparak herhangi bir performans artışı elde edemezsiniz, hala tüm tablo tr'lerini bulup o listeyi filtreleyebilir. –

0

Sana jQuery unsurların 's endekste 0'dan sayacaktır hayal ediyorum rağmen, spot var herhalde.

Yani (1) gt olurdu ve LT (4)?

+0

Doğru, sıfır dizinden var. Benim hatam. – Bob

10

nasılsın tablonun üçüncü ve dördüncü satır verecektir $ ('tablo tr'). Dilim (2, 4) JavaScript diziler 0 endeksli olduğundan

, yaklaşık. Dilim hala bir jQuery sarılmış (alt) set döndürecektir, bu yüzden aynı sonuçtur.

+0

Evet, ancak seçicinin yalnızca belirtilen satırları aramasını istiyorum. Bu yöntemle, jQuery önce tüm tablo satırlarını getirir, sonra istenmeyen tabloları filtreler. – Bob

+0

@Bob, –

+0

Oh seçicisini kullansanız bile, bu hayal kırıklığı yaratıyor. Dahili olarak jQuery öğesinin, belirtilen dizinden daha az olan satırları atlayacağını veya ilgili seçici değiştiricilerini kullandığınızda satırların belirtilen dizinden daha büyük olduğunda duracağını varsaydım. En azından bu şekilde tüm tablo satırlarını dikkate almak zorunda kalmayacaktı. – Bob