jQuery - 检查所选行是否是表中的最后一个可见行

时间:2012-11-05 15:15:08

标签: javascript jquery css jquery-selectors jquery-traversing

之前我在一个条件中检查了一行是否是这样的表中的最后一行:

$row.is(':last-child')

工作正常。

现在,我要求隐藏表中的某些行 - 现在我必须检查特定行是否是表中的最后一个可见行。

我试过这个:

$row.is(':visible:last-child')

但不是那么成功。有人有线索吗?

3 个答案:

答案 0 :(得分:3)

这不起作用,因为last-childdisplay: none;

一种方法是迭代孩子以找到最后一个可见孩子的索引 (see fiddle)

var $rows = $('td');
var $rowsReverse = $($rows.get().reverse());

var $lastVisibleIndex = -1;
$rowsReverse.each(function(index) {
    if ($lastVisibleIndex == -1 && $(this).is(':visible')) {
        $lastVisibleIndex = $rowsReverse.length - index - 1;
    }
});

$rows.each(function(index) {
    var $row = $(this);
    if (index == $lastVisibleIndex) {            
        $row.addClass('red');
    }
});​

答案 1 :(得分:1)

Thanx大家快速反馈。我可以用以下方法解决它:

$row.parent().find('tr:visible').last().attr('data-id') is $row.attr('data-id')

(它在循环中)

@falsarella你的回答我认为工作正常 - 有点复杂,但显然有效。

答案 2 :(得分:0)

你可以尝试

$(element).is(":visible").last();

$(element:visible).last();

如果这不起作用,请告诉我。