以前我在一个条件下检查了一行是否是这样的表中的最后一行:
$row.is(':last-child')
效果很好。
现在,我需要隐藏表中的某些行 - 现在我必须检查特定行是否是表中最后一个可见行。
我试过这个:
$row.is(':visible:last-child')
但不是那么成功。有人有线索吗?
以前我在一个条件下检查了一行是否是这样的表中的最后一行:
$row.is(':last-child')
效果很好。
现在,我需要隐藏表中的某些行 - 现在我必须检查特定行是否是表中最后一个可见行。
我试过这个:
$row.is(':visible:last-child')
但不是那么成功。有人有线索吗?
这不起作用,因为last-child
is display: none;
。
一种方法是迭代孩子以找到最后一个可见孩子的索引(参见小提琴):
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');
}
});
感谢大家的快速反馈。我可以用以下方法解决它:
$row.parent().find('tr:visible').last().attr('data-id') is $row.attr('data-id')
(它在一个循环中)
@falsarella 我想你的答案很好 - 有点复杂,但它显然有效。
你可以试试
$(element).is(":visible").last();
或者
$(element:visible).last();
如果这不起作用,请告诉我。