jQuery类计数某个表的列号

时间:2012-03-29 16:22:46

标签: javascript jquery

我已经有一段时间了,如果有人有任何想法,我想知道实现目标的最佳方式!

示例:

<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;

这不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果我理解正确,您希望获得第二列中的表格单元格(不是问题中指示的第一个),其中包含类active。如果是这种情况,您可以使用以下内容:

var length = $(self).closest('tbody').find('tr').find('td:eq(1)').filter('.active').length;

http://jsfiddle.net/mikemccaughan/g6mnn/

答案 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;

希望有所帮助!