多个元素可见——需要函数来确定页面上哪个元素较高?
我正在使用以下代码(我从几年前的另一篇文章中获得)来识别在用户浏览器中完全可见的元素:
function isScrolledIntoView(elem)
{
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}
,我检查多个元素并在函数返回时滚动到它们:
if(isScrolledIntoView($('#hero')) && (!($('#hero').hasClass('selected')))){
$('div, img').removeClass('selected');
$('#hero').addClass("selected");
$("#nav-dock").animate({top: '200px'});
}
if(isScrolledIntoView($('#home-digital-trans')) && (!($('#home-digital-trans').hasClass('selected')))){
$('div, img').removeClass('selected');
$('#home-digital-trans').addClass("selected");
$("#nav-dock").animate({top: '800px'});
}
然后 在一些罕见的情况下,我会同时看到两个元素。因此,我试图弄清楚如何编写一个函数,如果多个元素可见,该函数可以选择“更高”的元素。
我什至不知道从哪里开始——我真的不是一个 jQuery 程序员。也许对类 .nav 的所有元素使用position(),然后返回最接近顶部且可见的元素?
I am using the following code, which I garnered from another post from a few years back, to identify elements that are fully visible in a user's browser:
function isScrolledIntoView(elem)
{
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}
I'm then checking for multiple elements and scrolling to them if the function returns:
if(isScrolledIntoView($('#hero')) && (!($('#hero').hasClass('selected')))){
$('div, img').removeClass('selected');
$('#hero').addClass("selected");
$("#nav-dock").animate({top: '200px'});
}
if(isScrolledIntoView($('#home-digital-trans')) && (!($('#home-digital-trans').hasClass('selected')))){
$('div, img').removeClass('selected');
$('#home-digital-trans').addClass("selected");
$("#nav-dock").animate({top: '800px'});
}
But in some rare cases, I'm having BOTH elements visible at the same time. So I'm trying to figure out how I can write a function that can choose the "higher" element if more than one element is visible.
I don't even know where to start--I'm not a jQuery programmer really. Maybe using position() on all elements with class .nav and then returning the element that is closest to the top and visible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论