2013-02-07 41 views
6

当溢出设置为隐藏时,如何计算屏幕上显示的所有列表项目?计数列表屏幕上显示的项目不溢出

使用下面的代码仍然计算所有的项目,即使是溢出的项目。

var count = $("#myList ul li:visible").length; 

小提琴:

http://jsfiddle.net/kPAwX/2/

+2

':visible'选择没有'显示的元素:none'属性,你应该使用像'offset'或'position'方法和过滤元素。 – undefined

+0

你能举个例子吗? – agassi0430

+1

你可以在http://jsfiddle.net上提供演示吗? – undefined

回答

5
var maxh = $("#myList ul").height(); 
$("#myList ul li").filter(function() { 
    return $(this).position().top + $(this).height() < maxh; 
}); 

这将选择所有li S中的完全可见的。如果li被部分切断,它将被过滤。

如果您甚至想要部分可见的li s不被过滤,只需删除增加的高度(或创建您自己的任何想要的方式)。

http://jsfiddle.net/ExplosionPIlls/z6GXA/