在隐藏了一些行的表中,我想获得下一个可见行(如果存在).这将完成工作:
row = $(selectedRow).nextAll(':visible'); if ($(row).length > 0) selectedRow = row;
但是当所选行跟随许多行时,它会非常慢.脚本方法是:
var row = $(selectedRow).next(); while ($(row).length > 0 && !$(row).is(':visible')) row = $(row).next(); if ($(row).length > 0) selectedRow = row;
这要快得多,但我必须使用优雅的全jQuery方法.
解决方法
根据mblase75的有用建议,这是我发现的最优雅的解决方案:
var row = $(selectedRow).next(':visible'); if ($(row).length == 0) row = $(selectedRow).nextUntil(':visible').last().next(); if ($(row).length > 0) selectedRow = row;
通常(在我的情况下),表不会被过滤,因此下一行在很多时候都可见.如果不是,则nextUntil()会产生一组非空的不可见行.选择该集合中的最后一行,然后选择该行后面的下一行,如果有的话,则会在表格中显示下一个可见行.