【问题标题】:jQuery - check if selected row is last visible row in tablejQuery - 检查所选行是否是表中最后一个可见行
【发布时间】:2012-10-25 10:57:33
【问题描述】:

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

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

效果很好。

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

我试过这个:

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

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

【问题讨论】:

  • 应该可以工作,就像此页面上的$("#question").is(':visible:last-child') 返回false$("#question").is(':visible:first-child') 返回true如何它不起作用?
  • 我有一种奇怪的感觉,但我认为他可能误解了 :visible 选择器的作用。它不检查页面是否有内容(即滚动)。它只是查看页面上是否没有隐藏某些内容。一个纯粹的黑暗中的镜头,但嘿,它可能会有所帮助。

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


【解决方案1】:

这不起作用,因为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');
    }
});​

【讨论】:

    【解决方案2】:

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

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

    (在循环中)

    @falsarella 我猜你的答案很好用 - 有点复杂,但很明显。

    【讨论】:

    • 不错。我不知道我可以使用 id 比较,但是好的。一个小提琴会很好地帮助其他有同样问题的用户。
    【解决方案3】:

    你可以试试

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

    $(element:visible).last();

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多