Виділіть усі дочірні елементи, крім першого


84

Скажімо, у мене є таке:

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

Як вибрати всі дочірні елементи після першого за допомогою jQuery? Тож я можу досягти чогось на зразок:

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

Відповіді:


139

Ви повинні мати можливість використовувати селектори "не" та "перша дитина".

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

http://docs.jquery.com/Selectors/not

http://docs.jquery.com/Selectors/firstChild


Я спробував це: $ ('. CertificateList input: checkbox: not (: first-child)'), але це не спрацювало ....
Кріс Канал

Це буде повільніше, ніж метод Slice, перелічений нижче?
Кріс Марасті-Георг

36

Виходячи з мого абсолютно ненаукового аналізу чотирьох методів тут, схоже, серед них немає великої різниці в швидкості. Я пробігав кожен на сторінці, що містить ряд невпорядкованих списків різної довжини, і приурочував їх за допомогою профайлера Firebug.

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

Середній час: 5,322 мс

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

Середній час: 5,590 мс

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

Середній час: 6,084 мс

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

Середній час: 7,831 мс


3
Я зіткнувся з цим питанням, тому що мені потрібно було отримати всіх дітей, але перших. Я робив це на всіх h3, які були у div. Я провів три запити, як у вас, на моїй сторінці, і прийшов із запитом: not (: first-child), як найшвидший у 2-3 рази. Я думаю, що структура вашої сторінки може також вплинути на швидкість профілю. У будь-якому випадку, хоча ця відповідь навчила мене, як використовувати профілі Firebug, і я дякую вам за це.
RedWolves




2

Це має спрацювати

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


0

Використовуйте метод jQuery .not ()

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

АБО

var firstElement = $('li').first();
$('li').not(firstElement).addClass('something');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.