我已经有一段时间了,如果有人有任何想法,我想知道实现目标的最佳方式!
示例:
<table>
<tbody>
<tr>
<td>Hello</td>
<td>Hello (I want to check this column)</td>
</tr>
<tr>
<td>Hello 2</td>
<td class="active">Hello 2 (this column)</td>
</tr>
</tbody>
</table>
jQuery我到目前为止(我正在从一个被点击的元素遍历):
var length = $(self).closest("tbody").find("tr").find("td.active").length;
显然,当我只想要第二列时,这会得到td的所有活动类。我试过了:
var length = $(self).closest("tbody").find("tr").find("td:eq(1).active").length;
这不起作用。
有什么想法吗?
答案 0 :(得分:3)
如果我理解正确,您希望获得第二列中的表格单元格(不是问题中指示的第一个),其中包含类active
。如果是这种情况,您可以使用以下内容:
var length = $(self).closest('tbody').find('tr').find('td:eq(1)').filter('.active').length;
答案 1 :(得分:1)
我认为您的选择器并没有按照您的预期进行操作。我本来期望你期待的是什么,但请查看eq()
文档中的这一段(强调我的):
请注意,由于JavaScript数组使用基于0的索引,因此这些 选择者反映了这一事实。这就是 $(&#39; .myclass:eq(1)&#39;)选择的原因 文档中的第二个元素是myclass类,而不是 首先。相反,:nth-child(n)使用基于1的索引来符合 到CSS规范。
因此,您希望在没有类选择器的情况下使用td:eq(1)
,然后过滤结果,然后计算它们:
var length = $(self).closest("tbody").find("td:eq(1)").filter(".active").length;
希望有所帮助!