获取可滚动列表中第一个可见项的位置

时间:2012-08-09 06:32:10

标签: javascript dom user-interface

我有一个li的列表。每个项目在集合中都有对应的对象。当我开始滚动列表时,我现在想要看看实际的第一个可见项目,并了解它在我的集合中的位置。在我的第一个版本中很容易因为每个项目具有相同的高度,我可以将列表的scrollTop除以项目的高度。但在我们的新版本中,每件商品都有不同的高度。

问题是它是一个无限可滚动的列表,它必须在移动设备上运行。所以也许有更好的解决方案,然后迭代所有项目并总结其高度,直到它大于列表的scrollTop。

是否有常见的方法来处理这个问题。

1 个答案:

答案 0 :(得分:0)

好的,我找到了一种使用document.elementFromPoint的简便方法:

  <script>
    var span = $('span');
    var ul =  $('ul')
    var y = ul.offset().left +1;
    var x = ul.offset().top +1;
    $('ul').scroll(function(){
      var el = document.elementFromPoint(y,x);
      span.html($(el).html())
    })
  </script>

Example