我需要使用 javascript 找到具有 id = "part1" 的元素的子元素的子元素。所以本质上,我想到达 span 元素的第三个表的第三行,但我似乎无法让它工作:(
<span id = "part1">
<table> </table>
<table> </table>
<table>
<tr> ... </tr>
<tr> ... </tr>
<tr> ... </tr> (get this row)
</table>
</span>
我需要使用 javascript 找到具有 id = "part1" 的元素的子元素的子元素。所以本质上,我想到达 span 元素的第三个表的第三行,但我似乎无法让它工作:(
<span id = "part1">
<table> </table>
<table> </table>
<table>
<tr> ... </tr>
<tr> ... </tr>
<tr> ... </tr> (get this row)
</table>
</span>
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-indexed”计数并nth-child
遵循“1-indexed”。
请注意,:eq
选择nth:child
器的工作方式不同。在这种情况下,它会做同样的事情,因为你只有table
里面的元素span#part1
。
来自 jQuery 文档:
:nth-child(n) 伪类很容易与 :eq(n) 混淆,尽管两者会导致匹配的元素截然不同。使用 :nth-child(n),所有子元素都被计算在内,无论它们是什么,并且仅当指定的元素与附加到伪类的选择器匹配时才会被选中。使用 :eq(n) 仅计算附加到伪类的选择器,不限于任何其他元素的子元素,并且选择第 (n+1) 个(n 从 0 开始)。
参考:
尝试这个
this.parentNode().getElementsByTagName("table")[2].childNodes[2];
我更喜欢使用.find()
而不是嘶嘶作响的引擎。像这样的东西:
var TheThirdRow = $('#part1').find('table')
.eq(2)
.find('tr')
.eq(2);