从定义的元素总数中获取第一个特定元素
Get first specific elements from a defined total of elements
我有
<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>
我想获取 table "ok" 的前 10 个元素,然后从这 10 个元素中获取 class "red" 的所有元素
在这种情况下,我只会得到 6 个元素。
我只走了这么远
var total = $("#ok tr"); var red = total.slice(1, 11);
$(".red").slice(0,10);
您可以使用一个选择器来实现,使用 jQuery 的 :lt
extension 和一个后代选择器:
var redsWithinFirst10Rows = $("#ok tr:lt(10) .red");
也就是说:"Within the element with the id
ok
, select the rows with zero-based indexes less than 10 (so, 0-9) and select the descendants of those rows with the class .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
的直接子项无效。
您的方法中缺少的是 find()
var red = total.slice(0, 10).find('.red');
对行进行切片,然后找到那些行中的红色class
我有
<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>
我想获取 table "ok" 的前 10 个元素,然后从这 10 个元素中获取 class "red" 的所有元素 在这种情况下,我只会得到 6 个元素。
我只走了这么远
var total = $("#ok tr"); var red = total.slice(1, 11);
$(".red").slice(0,10);
您可以使用一个选择器来实现,使用 jQuery 的 :lt
extension 和一个后代选择器:
var redsWithinFirst10Rows = $("#ok tr:lt(10) .red");
也就是说:"Within the element with the id
ok
, select the rows with zero-based indexes less than 10 (so, 0-9) and select the descendants of those rows with the class .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
的直接子项无效。
您的方法中缺少的是 find()
var red = total.slice(0, 10).find('.red');
对行进行切片,然后找到那些行中的红色class