Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery选择除第一个之外的所有_Jquery_Jquery Selectors - Fatal编程技术网

jQuery选择除第一个之外的所有

jQuery选择除第一个之外的所有,jquery,jquery-selectors,Jquery,Jquery Selectors,在jQuery中,如何使用选择器访问除第一个元素外的所有元素?因此,在下面的代码中,只访问第二个和第三个元素。我知道我可以手动访问它们,但可能有任意数量的元素,所以这是不可能的。谢谢 <div class='test'></div> <div class='test'></div> <div class='test'></div> 或: 或: 或: 或者:(根据@Jordan Lev的评论): 等等 见: 由

在jQuery中,如何使用选择器访问除第一个元素外的所有元素?因此,在下面的代码中,只访问第二个和第三个元素。我知道我可以手动访问它们,但可能有任意数量的元素,所以这是不可能的。谢谢

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

或:

或:

或:

或者:(根据@Jordan Lev的评论):

等等

见:


由于jQuery选择器是从右向左求值的,因此相当可读的
li:not(:first)
会因为求值而变慢

同样快速且易于阅读的解决方案是使用函数版本
。而不是(“:first”)

e、 g

JSPerf:


这只比
切片(1)
慢几个百分点,但可读性很强,因为“我想要除第一个之外的所有内容”。

我的答案集中在一个扩展案例上,该案例源自顶部暴露的案例

假设有一组元素,要从中隐藏除第一个元素以外的子元素。例如:

<html>
  <div class='some-group'>
     <div class='child child-0'>visible#1</div>
     <div class='child child-1'>xx</div>
     <div class='child child-2'>yy</div>
  </div>
  <div class='some-group'>
     <div class='child child-0'>visible#2</div>
     <div class='child child-1'>aa</div>
     <div class='child child-2'>bb</div>
  </div>
</html>
  • 解决方案(在这种扩展情况下)将是:

  • $(文档).ready(函数(){
    $(“.btn1”)。单击(函数(){
    $(“div.test:not(:first)”).hide();
    });
    $(“.btn2”)。单击(函数(){
    $(“div.test”).show();
    $(“div.test:not(:first):not(:last)”).hide();
    });
    $(“.btn3”)。单击(函数(){
    $(“div.test”).hide();
    $(“div.test:not(:first):not(:last)”).show();
    });
    });
    
    
    隐藏除第一个以外的所有
    隐藏除第一个和最后一个之外的所有
    先藏后藏
    
    弗斯特 第二 第三
    最后
    这里是一个比较所有这些解决方案的JsPerf:根据项目的数量,
    $(“li”)。而不是(“:eq(0)”)
    看起来不错。喜欢这个列表。只想添加:
    $(“div.test:first”).sides().hide()
    。我发现从第一个元素开始,然后隐藏它的所有同级元素非常有用,即使它们没有使用公共选择器找到。很棒的列表!只是一个小评论;我认为gt不再是JQuery函数,至少在我使用的版本中不是。我得到一个类型错误:.gt不是函数。
    $(“div.test”).slice(1.hide()在选择为空的情况下看起来最宽容…@SandyGifford这不包括不在测试类中的兄弟姐妹吗?错过了不是兄弟姐妹的测试类元素吗?看看这个答案,这也是我最喜欢的答案,我发现它非常清晰易读。其意图是明确无误的。
    
    $("div.test:not(:eq(0))").hide();
    
    $("div.test").not(":eq(0)").hide();
    
    $("div.test:gt(0)").hide();
    
    $("div.test").slice(1).hide();
    
    $("li").not(":first").hide();
    
    <html>
      <div class='some-group'>
         <div class='child child-0'>visible#1</div>
         <div class='child child-1'>xx</div>
         <div class='child child-2'>yy</div>
      </div>
      <div class='some-group'>
         <div class='child child-0'>visible#2</div>
         <div class='child child-1'>aa</div>
         <div class='child child-2'>bb</div>
      </div>
    </html>
    
    $('.child:not(:first)').hide();
    
    $('.some-group').each(function(i,group){
        $(group).find('.child:not(:first)').hide();
    });