Javascript 如何在滚动时获取div top position值
当div滚动到某一点时,我试图运行一些脚本。有一个固定的导航,当用户滚动窗口时,它会在接近导航时更改导航名称。我正在使用$(window).scroll功能,但它只检查div位置一次,不更新值。如何使scroll每移动5-10像素检查一次窗口大小,以避免占用太多内存/处理。 代码设置在: HTML 剧本Javascript 如何在滚动时获取div top position值,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,当div滚动到某一点时,我试图运行一些脚本。有一个固定的导航,当用户滚动窗口时,它会在接近导航时更改导航名称。我正在使用$(window).scroll功能,但它只检查div位置一次,不更新值。如何使scroll每移动5-10像素检查一次窗口大小,以避免占用太多内存/处理。 代码设置在: HTML 剧本 $(window).scroll(function() { var b = $('#b').position(); $('.message').text(b.top);
$(window).scroll(function() {
var b = $('#b').position();
$('.message').text(b.top);
if (b.top == 55) {
$('.message').text("Div B");
}
});
试试这个
$(window).scroll(function() {
var scrollTop = $(window).scrollTop(),
divOffset = $('#b').offset().top,
dist = (divOffset - scrollTop);
$('.message').text(dist);
if (b.top == 55) {
$('.message').text("Div B");
}
});
您的原始代码只是检查div相对于文档顶部的位置,该位置从未更改。您需要计算滚动窗口所产生的金额,并进行相应计算
还要注意jQuery的
.position()
和.offset()
方法之间的区别。.position()
方法允许我们检索元素相对于偏移父元素的当前位置。与此相比,.offset()
,它检索相对于文档的当前位置。而且,b.top==55
永远不会是真的。@shmiddy-true,但是如果(dist==55),它就会变成。我怀疑OP试图做的就是这个意图。我想应该是如果(dist<55)
使用纯js,我怎么检查呢?事实上,它是检查b
在每个滚动增量上的位置,但是b
相对于文档的位置永远不会改变。见@j08691的答案。
$(window).scroll(function() {
var b = $('#b').position();
$('.message').text(b.top);
if (b.top == 55) {
$('.message').text("Div B");
}
});
$(window).scroll(function() {
var scrollTop = $(window).scrollTop(),
divOffset = $('#b').offset().top,
dist = (divOffset - scrollTop);
$('.message').text(dist);
if (b.top == 55) {
$('.message').text("Div B");
}
});