Powiedz, że mam:
<ul>
<li>First item</li>
<li>Second item</li>
<li>Third item</li>
</ul>
Jak wybrałbym wszystkie elementy podrzędne po pierwszym z użyciem jQuery? Mogę więc osiągnąć coś takiego:
<ul>
<li>First item</li>
<li class="something">Second item</li>
<li class="something">Third item</li>
</ul>
javascript
jquery
Chris Canal
źródło
źródło
Opierając się na mojej całkowicie nienaukowej analizie czterech przedstawionych tu metod, wygląda na to, że nie ma między nimi dużej różnicy prędkości. Uruchomiłem każdą na stronie zawierającej serię nieuporządkowanych list o różnej długości i ustawiłem je w czasie za pomocą profilera Firebug.
$("li").slice(1).addClass("something");
Średni czas: 5,322 ms
$("li:gt(0)").addClass("something");
Średni czas: 5,590 ms
$("li:not(:first-child)").addClass("something");
Średni czas: 6,084 ms
$("ul li+li").addClass("something");
Średni czas: 7,831 ms
źródło
http://docs.jquery.com/Traversing/slice
$("li").slice(1).addClass("something");
źródło
Bardziej eleganckie zapytanie (zaznacz wszystkie elementy li, które są poprzedzone elementem li):
$('ul li+li')
źródło
użyłbym
$("li:gt(0)").addClass("something");
źródło
To powinno działać
$('ul :not(:first-child)').addClass('something');
źródło
Nad tym pracuję do tej pory
$('.certificateList input:checkbox:gt(0)')
źródło
Użyj metody jQuery .not ()
$('li').not(':first').addClass('something');
LUB
var firstElement = $('li').first(); $('li').not(firstElement).addClass('something');
źródło