从定义的元素总数中获取第一个特定元素

时间:2016-03-27 15:32:04

标签: javascript jquery slice elements children

我有

<table id="ok">
<tr><div class="red">Red</div></tr>
<tr><div class="blue">Blue</div></tr>
<tr><div class="red">Red</div></tr>
<tr><div class="blue">Blue</div></tr>
<tr><div class="red">Red</div></tr>
<tr><div class="red">Red</div></tr>
<tr><div class="red">Red</div></tr>
<tr><div class="red">Red</div></tr>
<tr><div class="blue">Blue</div></tr>
<tr><div class="blue">Blue</div></tr>
.......
List goes on and on
</table>

我想获得表“ok”的前10个元素,从那些10,我想得到所有类“红色”的元素 在这种情况下,我只会得到6个元素。

我只走了这么远

var total = $("#ok tr"); var red = total.slice(1, 11);

3 个答案:

答案 0 :(得分:4)

你可以使用一个选择器,使用jQuery的:lt extension和一个后代选择器:

var redsWithinFirst10Rows = $("#ok tr:lt(10) .red");

说:“在id ok的元素中,选择零基索引小于10的行(所以,0-9)并选择这些行的后代。班.red。“ (是的,jQuery扩展选择器使用基于0的索引而不是CSS中通常的基于1的索引。)

直播示例:

var redsWithinFirst10Rows = $("#ok tr:lt(10) .red");
redsWithinFirst10Rows.css("color", "red");
<table id="ok">
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="red">Red</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
<tr><td><div class="blue">Blue</div></td></tr>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>

请注意,您必须修复自己的标记,div无法作为tr的直接子项。

答案 1 :(得分:2)

您的方法中缺少的是find()

var red = total.slice(0, 10).find('.red');

切片行,然后在这些行中找到红色类

答案 2 :(得分:-1)

$(".red").slice(0,10); 

了解它here http://api.jquery.com/slice/