【发布时间】:2010-10-24 17:51:36
【问题描述】:
假设我的 HTML 页面中有多个表(没有它们的 'id' 属性),那么如何使用 jQuery 选择器选择第一个表的第一行或任何特定表?
【问题讨论】:
标签: jquery css-selectors
假设我的 HTML 页面中有多个表(没有它们的 'id' 属性),那么如何使用 jQuery 选择器选择第一个表的第一行或任何特定表?
【问题讨论】:
标签: jquery css-selectors
$("table:first > tr:first")
或
$("table:first").find("tr:first")
或
$("table:first").children("tr:first")
或
$("table").eq(0).children("tr").eq(0)
所以如果我理解后续问题...
$("table:eq(1) tr:has(table:eq(2))")
翻译为:如果 tr 有第三个表,则在第二个表中获取任何 tr
或
$("table").eq(1).children("tr:has(table:eq(2))")
【讨论】:
.children("tr:first") 换成.find('> tbody > tr, > tr'),因为some browsers add tbody to all tables and some don't
虽然不是 jQuery 特定的,但我在 w3c selectors page 上被介绍了 dom 选择器。它非常详细,但充满了错综复杂的示例。
【讨论】:
使用 jQuery 的eq() 方法可以指定要获取的元素的索引。
这将选择在 DOM 中找到的第二个表的第一行
$('table:eq(1) tr:first')
【讨论】:
$("tr:first");
【讨论】:
可以用来选择第 n 个表中的第 n 行的东西:
$("table:eq(n) tr:eq(n)")
其中 n 是表或 tr 的从零开始的索引。
例子:
$("table:eq(2) tr:eq(4)")
获取第 3 个表的第 5 行。
【讨论】:
@svinto 的回答绝对是完成此任务的最短、最快和最简单的方法。如果您真的关心性能(例如,在任意复杂的 for 循环中选择),这很可能会更快一点:
$('tr').eq(0)
如果你不需要只使用 jQuery 选择器并且实际上需要DOM <TR> 元素,你可以使用:
$('table')[0].rows[0]
或者:
$('tr')[0]
【讨论】: