如何在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)")
但这看起来并不高效或漂亮。我猜你也可以选择所有a
s,然后在它们上面运行.each
,但是如果有更多a
s,效率可能会非常低。
【问题讨论】:
【参考方案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中选择一系列元素的主要内容,如果未能解决你的问题,请参考以下文章