İlki dışındaki tüm alt öğeleri seçin


83

Aşağıdakilere sahip olduğumu varsayalım:

<ul>
 <li>First item</li>
 <li>Second item</li>
 <li>Third item</li>
</ul>

JQuery kullanarak ilkinden sonra tüm alt öğeleri nasıl seçerim? Böylece şöyle bir şey başarabilirim:

<ul>
 <li>First item</li>
 <li class="something">Second item</li>
 <li class="something">Third item</li>
</ul>

Yanıtlar:



36

Buradaki dört yöntemin tamamen bilimsel olmayan analizine dayanarak, aralarında çok fazla hız farkı yok gibi görünüyor. Her birini, değişen uzunluklarda bir dizi sırasız liste içeren bir sayfada çalıştırdım ve Firebug profil oluşturucuyu kullanarak zamanlarını belirledim.

$("li").slice(1).addClass("something");

Ortalama Süre: 5.322ms

$("li:gt(0)").addClass("something");

Ortalama Süre: 5.590ms

$("li:not(:first-child)").addClass("something");

Ortalama Süre: 6.084ms

$("ul li+li").addClass("something");

Ortalama Süre: 7.831ms


3
Bu soruyla karşılaştım çünkü ilki hariç tüm çocukları almam gerekiyordu. Bunu bir div'deki tüm h3'lerde yapıyordum. Sayfamda yukarıdaki sorguların üçünü çalıştırdım ve çıktım: en hızlı değil (: birinci-çocuk) 2-3 kez. Sanırım sayfanızın yapılandırılma şekli de profil hızlarında rol oynayabilir. Her iki durumda da bu cevap Firebug profil oluşturucusunu nasıl kullanacağımı öğretti ve bunun için teşekkür ederim.
RedWolves


9

Daha zarif bir sorgu (öncesinde bir li öğesi olan tüm li öğelerini seçin):

$('ul li+li')


1
$ ("li + li") muhtemelen $ ("li: not (: first-child)") 'den daha hızlı çalışacaktır
Sergey Ilinsky

3

kullanırdım

$("li:gt(0)").addClass("something");

2

Bu çalışmalı

$('ul :not(:first-child)').addClass('something');

1

Şimdiye kadar çalıştığım şey bu

$('.certificateList input:checkbox:gt(0)')

0

JQuery .not () yöntemini kullanın

$('li').not(':first').addClass('something');

VEYA

var firstElement = $('li').first();
$('li').not(firstElement).addClass('something');
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.