【发布时间】:2012-09-19 20:55:22
【问题描述】:
当 div 滚动到某个点时,我正在尝试运行一些脚本。有一个固定的导航,当用户滚动窗口时,它假设一旦接近导航就会更改导航名称。我正在使用 $(window).scroll 函数,但它只检查一次 div 位置而不更新值。如何让滚动检查每移动 5-10 px 的窗口大小,这样就不会占用太多内存/处理。 代码设置在:http://jsfiddle.net/rexonms/hyMxq/
HTML
<div id="nav"> NAVIGATION
<div class="message">div name</div>
</div>
<div id="main">
<div id="a">Div A</div>
<div id ="b"> Div B</div>
<div id ="c"> Div C</div>
</div>
CSS
#nav {
height: 50px;
background-color: #999;
position:fixed;
top:0;
width:100%;
}
#main{
margin-top:55px;
}
#a, #b, #c {
height:300px;
background-color:#ddd;
margin-bottom:2px;
}
脚本
$(window).scroll(function() {
var b = $('#b').position();
$('.message').text(b.top);
if (b.top == 55) {
$('.message').text("Div B");
}
});
【问题讨论】:
-
实际上是在每次滚动增量时检查
b的位置,但b相对于文档的位置永远不会改变。请参阅@j08691 的回答。
标签: javascript jquery javascript-events