Javascript 返回当前处于视图中的集合的元素
我有一些元素,并检测它们是否当前都在视口中。我用这个答案来回答:Javascript 返回当前处于视图中的集合的元素,javascript,jquery,html,Javascript,Jquery,Html,我有一些元素,并检测它们是否当前都在视口中。我用这个答案来回答: 函数是crolledintoview(elem) { 变量$elem=$(elem); 变量$window=$(window); var docViewTop=$window.scrollTop(); var docViewBottom=docViewTop+$window.height(); var elemTop=$elem.offset().top; var elemBottom=elemTop+$elem.height()
函数是crolledintoview(elem)
{
变量$elem=$(elem);
变量$window=$(window);
var docViewTop=$window.scrollTop();
var docViewBottom=docViewTop+$window.height();
var elemTop=$elem.offset().top;
var elemBottom=elemTop+$elem.height();
返回((elemBottom=docViewTop));
}
我现在遇到的问题是,由于我使用的是一个元素集合,因为有两个元素具有相同的类.box
,我如何调整代码段以实际返回集合中当前可见的元素
谢谢
编辑:
我试图回来
[((elemBottom=docViewTop)),$(elem,this)]
这对你有帮助吗
$(“.box”)。每个(函数(索引){
//对于要获取的每个元素,如果在视口中,则为布尔值
如果(IsCrolledinToView(本)){
//做点什么
}
});
函数IsCrolledinToView(elem)
{
变量$elem=$(elem);
变量$window=$(window);
var docViewTop=$window.scrollTop();
var docViewBottom=docViewTop+$window.height();
var elemTop=$elem.offset().top;
var elemBottom=elemTop+$elem.height();
返回((elemBottom=docViewTop));
}
会对您有所帮助。函数IsCrolledinToView()
应该返回一个布尔值。return语句返回的数组的第二个值等于$(elem,this)
。第二个值指的是什么?我认为这可能是你问题的最佳答案只是你需要用answer@Jai中给出的函数检查那些元素,他说他有两个相同类名的项目.box
,即使使用元素也无法解决问题。getBoundingClientRect()
@超大化如何调用此函数(使用循环jQuery.each()…)?为.box
项分配两个不同的ID有什么问题?这就是背后的想法+1.
function isScrolledIntoView(elem)
{
var $elem = $(elem);
var $window = $(window);
var docViewTop = $window.scrollTop();
var docViewBottom = docViewTop + $window.height();
var elemTop = $elem.offset().top;
var elemBottom = elemTop + $elem.height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}