【发布时间】:2014-01-08 20:01:01
【问题描述】:
我遇到了窗口滚动问题,我认为事件触发得太快而无法处理。
我使用航路点来检测页面上的子导航在滚动时何时碰到标题,当它碰到标题时,它会将标题向上推离页面。当向上滚动时,标题会被拉到原来的位置。现在第一部分完美无缺,头部被推了起来,但把它拉回来是非常错误的。滚动太快会导致标题卡在途中。
它会像这样卡住: 但它应该进一步下降:
如果你慢慢滚动它会起作用,但实际上它不会切割它。不幸的是,该网站尚未公开,所以我还不能链接到它。
$('.subnav-wrapper').waypoint(function(direction) {
var $headerWrapper = $('.header-wrapper');
var headerHeight = $headerWrapper.outerHeight();
$(window).scroll(function() {
var scrollHeight = $(this).scrollTop();
if( scrollHeight >= 400 ) {
$headerWrapper.css( 'margin-top', ( scrollHeight - 400 ) * -1 );
}
});
},
{
offset: $('.header-wrapper').outerHeight()
});
【问题讨论】:
-
只是想知道为什么要在航点回调中嵌套滚动事件声明?在这里,每次触发 waypoints 事件时,您都在为窗口添加一个新的 onscroll 事件。当您滚动窗口时,航点会被触发,我猜这可能真的很麻烦。您可以检查在控制台中使用了多少 onscroll 事件:
$._data(window,'events').scroll
标签: jquery scroll jquery-waypoints