如何确定页面中是否显示HTML控件?

时间:2012-03-21 12:35:05

标签: javascript jquery html jquery-ui

我想知道如何才能在屏幕上显示当前显示的控件。

例如:

  

如果我有一个滚动条,阻止用户看到所有内容   在页面下方,我想制作一个选择器,它只选择用户现在可以在屏幕上看到的内容。如果我可以选择他没有看到的一切,那也很好。

这可能吗?怎么样?

由于

2 个答案:

答案 0 :(得分:2)

您可以计算用户可以看到的偏移量(例如,当用户滚动时):

var top = $(window).scrollTop();
var bottom = top + $(window).height();

然后,您可以看到元素是否在此范围内。

$('*').each( function() {
  var el = $(this);
  var offsetTop = el.offset().top;
  var inView = offsetTop >= top && offsetTop <= bottom;
  el.addClass( inView ? 'in-view' : 'out-of-view' );
} );

显然,这样做有一些明显的缺点。根据您对此信息的处理方式,您只能选择input或其他可能有用的内容。

答案 1 :(得分:0)

我不知道是否有一个简单或优雅的解决方案。您可以做的是计算所有元素的offset positionscroll offset以找出哪些元素可见。如果你需要检查很多元素,这可能会变得昂贵,但是否则可以很好地工作。