jQuery выбрать все, кроме первого
В jQuery как использовать селектор для доступа ко всем, кроме первого элемента? Таким образом, в следующем коде будет доступен только второй и третий элементы. Я знаю, что могу получить доступ к ним вручную, но может быть любое количество элементов, так что это невозможно. Благодарю.
- Разница между CSS-селектором и фильтром jQuery?
- Тестирование, если флажок установлен с помощью jQuery
- Как получить выражение селектора jQuery в виде текста?
- Является ли jQuery каким-либо кэшированием «селекторов»?
- Как изменить css display none или заблокировать свойство с помощью JQuery?
- jQuery: исключить $ (this) из селектора
- Фильтр jquery имеет +
- jQuery ИЛИ Селектор?
- Имя атрибута jQuery содержит
- Выберите элемент, когда имя classа начинается с определенного слова
- Селекторы jQuery с переменными
- использовать jQuery's find () для объекта JSON
- jQuery scrollTop не работает в Chrome, но работает в Firefox
$("div.test:not(:first)").hide();
или:
$("div.test:not(:eq(0))").hide();
или:
$("div.test").not(":eq(0)").hide();
или:
$("div.test:gt(0)").hide();
или: (согласно комментарию @Jordan Lev’s):
$("div.test").slice(1).hide();
и так далее.
Видеть:
Из-за того, как селекторы jQuery оцениваются справа налево , вполне читаемый li:not(:first)
замедляется этой оценкой.
Не менее быстрое и легко читаемое решение использует версию функции .not(":first")
:
например
$("li").not(":first").hide();
JSPerf: http://jsperf.com/fastest-way-to-select-all-expect-the-first-one/6
Это всего лишь несколько процентных пунктов медленнее, чем slice(1)
, но очень читаем как «Я хочу всех, кроме первого».
Мой ответ сосредоточен на расширенном случае, полученном от того, который был показан сверху. Расширенный пример:
Предположим, у вас есть группа элементов, из которых вы хотите скрыть дочерние элементы, кроме первого. В качестве примера:
visible#1 xx yy visible#2 aa bb
- Мы хотим скрыть все элементы «.child» в каждой группе. Так что это не поможет, потому что скроет все элементы «.child», кроме «visible # 1»:
$('.child:not(:first)').hide();
- решение (в этом расширенном случае) будет:
$('.some-group').each(function(i,group){ $(group).find('.child:not(:first)').hide(); });
$(document).ready(function(){ $(".btn1").click(function(){ $("div.test:not(:first)").hide(); }); $(".btn2").click(function(){ $("div.test").show(); $("div.test:not(:first):not(:last)").hide(); }); $(".btn3").click(function(){ $("div.test").hide(); $("div.test:not(:first):not(:last)").show(); }); });
First Second Third Last