我需要使用带有javascript的id为“part1”的元素的子元素的子元素。基本上,我想要到span元素的第3个表的第3行,但我似乎无法让它工作:(
<span id = "part1">
<table> </table>
<table> </table>
<table>
<tr> ... </tr>
<tr> ... </tr>
<tr> ... </tr> (get this row)
</table>
</span>
答案 0 :(得分:18)
var span = document.getElementById('part1');
var row = span.getElementsByTagName('table')[2].childNodes[2];
使用:eq
选择器:
var $row = $('#part1 > table:eq(2) > tr:eq(2)');
使用:nth-child
选择器:
var $row = $('#part1 > table:nth-child(3) > tr:nth-child(3)');
:eq
和:nth-child
选择器会选择所有父元素的第n个子元素。但是:eq
遵循“0索引”计数,nth-child
跟随“1索引”。
请注意,:eq
和nth:child
选择器的工作方式不同。在这种情况下,它会执行相同操作,因为table
内只有span#part1
个元素。
来自jQuery文档:
:nth-child(n)伪类很容易与:eq(n)混淆,甚至 虽然这两者可以导致显着不同的匹配元素。 随着:n-child(n),所有孩子都被计算在内,无论他们是什么 是,并且只有在匹配时才选择指定的元素 选择器附加到伪类。使用:eq(n)仅选择器 附属于伪类计算,不限于儿童 选择任何其他元素,并选择第(n + 1)个(n为0)。
<强>参考:强>
答案 1 :(得分:2)
试试这个
this.parentNode().getElementsByTagName("table")[2].childNodes[2];
答案 2 :(得分:0)
我更喜欢使用.find()
而不是嘶嘶声引擎。像这样:
var TheThirdRow = $('#part1').find('table')
.eq(2)
.find('tr')
.eq(2);