为什么:最后一个孩子没有给我我期望的结果?

时间:2012-02-14 15:58:40

标签: jquery html jquery-selectors

jsFiddle这里:http://jsfiddle.net/_mtr/uqMZJ/

基本上,当文档准备好时,不会隐藏包含行的表,只有10个左右。我想要最后一个非隐藏行的索引,但我的jQuery选择器让我失望。

4 个答案:

答案 0 :(得分:3)

您滥用:last-child选择器,该选择器匹配其父级的最后一个子元素。您实际上想要匹配集中的最后一个元素,因此您应该使用:last选择器:

i2 = $('table .visible:last').index();

您会找到更新的小提琴here

答案 1 :(得分:0)

因为类<tbody>同时是<tr>的最后一个孩子,没有<td>visibletable。 。

您应该使用:last代替,它选择jquery集合中的最后一个匹配元素。

答案 2 :(得分:0)

你最好在最后使用类选择器:

var i2 = $('table :last-child .visible').index();

因为:last-child适用于表格。

答案 3 :(得分:0)

Last-child只是告诉您该元素是父元素的最后一个子元素,而不是前一个选择器匹配的组的最后一个元素。 tr.visible s中没有一个是table标记的最后一个子节点。要获得最后一个可见的tr,请尝试以下方法:

$('tr.visible').last ();

这就是“最后”方法的用途:)