如何在jQuery中选择一系列元素

Posted

技术标签:

【中文标题】如何在jQuery中选择一系列元素【英文标题】:How to select a range of elements in 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,效率可能会非常低。

【问题讨论】:

【参考方案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") 语法。

以上是关于如何在jQuery中选择一系列元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在第一个子选择器jquery中选择元素

如何在 Spark RDD 中选择一系列元素?

在jQuery中如何选择某DIV的子元素?

如何从一系列数据属性的元素中更改 css?

jquery中如何选择选取DOM元素?

jquery如何获取第一个或最后一个子元素