jQuery selector $('table td:eq(2)a')仅从第一行获取单元格

Fit*_*aki 4 jquery jquery-selectors

$('table td:eq(2) a')返回a第三列的标记但仅从第一行返回.

为什么?

Mat*_*ela 6

这不是一个错误,但它绝对令人困惑.什么能给你你期望的结果:

$('table td:nth-child(3) a')
Run Code Online (Sandbox Code Playgroud)

虽然:nth-​​child和:eq似乎非常相似,但从您期望的结果可以看出,行为可能完全不同.

关于此的jQuery文档可以在这里找到.它指出:

:nth-​​child(n)伪类很容易与:eq(n)混淆,即使这两者可能导致显着不同的匹配元素.使用:nth-​​child(n),所有子节点都被计数,无论它们是什么,只有在与附加到伪类的选择器匹配时才选择指定的元素.使用:eq(n)仅计算附加到伪类的选择器,不限于任何其他元素的子元素,并且选择第n个元素.

简单来说,eq(2)将选择while结果集中的第三个元素,而:nth-​​child(3)将选择其父级的3个子元素.在这种情况下,父母将是其tr.