【问题标题】:How to select a range of elements in jQuery如何在jQuery中选择一系列元素
【发布时间】:2010-09-16 04:53:54
【问题描述】:
<div id="myDiv">
     <a>...</a>
     <a>...</a>
     <a>...</a>
     <a>...</a>
     <a>...</a>
     <a>...</a>
</div>

如果你想在上面的例子中选择第二个、第三个和第四个a标签,你会怎么做?我唯一能想到的是:

$("#myDiv a:eq(1), #myDiv a:eq(2), #myDiv a:eq(3)")

但这看起来并不高效或漂亮。我猜你也可以选择所有as,然后在它们上面运行.each,但是如果有更多as,效率可能会非常低。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    jQuery slice() 函数获取第一个和最后一个所需元素的索引,选择匹配元素的子集。请注意它不包括最后一个元素本身。

    在您的特定情况下,您应该使用

    $("#myDiv a").slice(1, 4)
    

    【讨论】:

    • $('.className').slice(1, 4) 也很有用,这就是我的场景所需要的,非常感谢您开始思路:)
    • 与更具体的选择器相比,如此广泛的初始选择是否会增加处理开销?还是您认为 :lt、:gt 和 :eq 更占用资源?
    • 太棒了。这也适用于从选择元素中选择多个选项。
    【解决方案2】:

    使用.slice() 函数正是我所需要的。

    【讨论】:

      【解决方案3】:

      您应该能够通过提取数组的一部分来做到这一点。就是这条线

      $("div[id='myDiv'] > a").slice(1,4).css("background","yellow");
      

      您感兴趣的。它将影响第 2、第 3 和第 4 个元素。

      <html>
          <head>
              <script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
              <script type="text/javascript">
                  $(document).ready(function(){
                      $("a").click(function(event){
                          $("div[id='myDiv'] > a").slice(1,4).css("background","yellow");
                          event.preventDefault();
                      });
                  });
              </script>
          </head>
          <body>
              <div id="myDiv">
                  <a>1</a>
                  <a>2</a>
                  <a>3</a>
                  <a>4</a>
                  <a>5</a>
                  <a>6</a>
              </div>
              <hr>
              <a href="" >Click here</a>
              <hr>
          </body>
      </html>
      

      【讨论】:

      • ID 选择效率极低。您应该改用$("#myDiv") 语法。
      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多