javascript - Jquery 偏移量在滚动时只返回一个数字

标签 javascript jquery html css twitter-bootstrap-3

我有一个网页,我需要获取页面元素的当前顶部位置。

我有一些 div,它们每个都有 100% 的高度,我在那里有我的内容。

我想从顶部获取这些 div(s) 位置并使用它。但是当我这样做时,它只返回一个数字,并且在滚动时不会改变。

这是我的代码:

HTML:

<header id="header">
   <div id="menu-div" class="container-full">
        <div class="container">
            <a href="#">TEST</a>
            <a href="#">TEST</a>
            <a href="#">Test</a>
            <a href="#">Test</a>
            <a href="#">Test</a>
            <a id="request-demo-a" class="pull-right" href="#">TEST demo</a>
            </div>
        </div>
   </header>


   <div id="first-div" class="center a-div">
   test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>
   </div>


   <div id="full-div" class="container a-div">

        test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>test content here...<br/>
        </div>

  <div id="other-div" class=" a-div">
  <br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/>

  </div>



  <div id="other-div" class=" a-div">
  <br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/><br/>test content here...<br/>test content here...<br/>test content here...<br/>

  </div>

CSS:

.a-div{
    height:100%;
}


#full-div{
    position:absolute;
    top:100%;
    width: 100%;
    height: auto;
    background: white;
    z-index:5;

}


#first-div{
    width:100%;
    height:100%;
    position:fixed;
    left:0;
    right:0;
    top:0;
    bottom: 0;
    margin: auto;
    color:white;
    z-index:-1;


}
#menu-div{
    background: white;
    padding:7px;
    position: fixed;
    z-index:10;
}


#menu-div .container a{
    margin-left: 15px;
    display:inline-block;
    font-size:large;
}

#request-demo-a{
    padding:5px;
    border: 2px solid #FF8000;
    color: white;
    text-shadow: none;
    background: orange;
    text-decoration: navajowhite;
}

#request-demo-a:hover, #request-demo-a:focus{
    background: #FF8000;
}

JavaScript (Jquery):

$(function(){
        /**start:Scroll*/
        $(document).scroll(function(){
         $("#request-demo-a").html($('#full-div').offset().top);
         /// I want this return current value of full-div!
         //And when it become equel 0 do something! (This is just example)

        });
        /**End: Scroll*/      
})

JSFiddle-Demo

我想获取 #full-div 的位置并使用它,当它等于 0 时,做一些事情(意味着到达顶部时)和我想要的其他 div在特定位置做某事。

但为什么 $('#full-div').offset().top 在滚动时只返回一个数字?

最佳答案

偏移量在滚动时不会改变,offset() 获取元素相对于文档的当前位置,整个文档都在滚动,所以什么都没有真正改变,元素仍然是在文档中完全相同的位置。

如果您想要滚动的距离,请使用 scrollTop,然后将其与元素偏移量进行比较,以查看页面滚动的量是否与元素到文档顶部的距离相同

$(document).on('scroll', function(){

    var scrolled = $(window).scrollTop();
    var offset   = $('#full-div').offset().top;

    if ( offset <= scrolled ) {
       // element is scrolled to top or above
    }

});

关于javascript - Jquery 偏移量在滚动时只返回一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35184834/

相关文章:

javascript - 为什么我不能让我的图像出现在表格单元格/节点中..也许我可以得到一些结论?

javascript - 如何区分 DOM 对象和 JavaScript 对象

javascript - 如何从单独的域请求 JSON 数据并自己使用它

Javascript if 语句判断用户是否点击了输入类型

javascript - 没有 src 属性的 iframe

html - 固定宽度的 div 和灵活宽度的 div 彼此相邻

javascript - Angularjs 模态在结果发回之前更新我的父范围

javascript - 如何在本地存储中的页面刷新时显示图像

javascript - 如何使时钟的显示与实时时间同步

javascript - jQuery 动画延迟