jQuery выбрать все, кроме первого



1 Answers

Из-за того, как селекторы 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) , но очень читаем как «Я хочу всех, кроме первого».

Question

В jQuery как использовать селектор для доступа ко всем, кроме первого элемента? Таким образом, в следующем коде будет доступен только второй и третий элементы. Я знаю, что могу получить доступ к ним вручную, но может быть любое количество элементов, так что это невозможно. Благодарю.

<div class='test'></div>
<div class='test'></div>
<div class='test'></div>



$(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();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="btn1">Hide All except First</button>
<button class="btn2">Hide All except First & Last</button>
<button class="btn3">Hide First & Last</button>

<br/>

<div class='test'>First</div>
<div class='test'>Second</div>
<div class='test'>Third</div>
<div class='test'>Last</div>




Related