Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在滚动时获取div top position值_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript 如何在滚动时获取div top position值

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);

当div滚动到某一点时,我试图运行一些脚本。有一个固定的导航,当用户滚动窗口时,它会在接近导航时更改导航名称。我正在使用$(window).scroll功能,但它只检查div位置一次,不更新值。如何使scroll每移动5-10像素检查一次窗口大小,以避免占用太多内存/处理。 代码设置在:

HTML

剧本

$(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");
    }
});​