我在stackoverflow上搜索过很多帖子,但没找到我的解决方案。
向下滚动200px后,我想调出一个菜单栏,没问题。 我希望它以slideDown显示。
问题是,在向下滚动200px后,每次我再次向下滚动时,slideDown()会再次滑动,我只会在第一次超过200px时将其拖动到slideDown。
这是我的jQuery代码:
var lastScrollTop = 0;
delta = 5;
$(window).scroll(function(event){
var st = $(this).scrollTop();
if(Math.abs(lastScrollTop - st) <= delta)
return;
//initialisation div caché :
$('#menu-container-mini').css("display", "none");
if (st > lastScrollTop){
// scrolling down :
console.log('scroll down'+st);
if(st>200){
// Scrolling down après 150px
console.log('scroll down st>150 : '+st);
// This condition isn't respected
// Each time I scroll down, the slideDown starts again :
if($('#menu-container-mini').css('display')=='none')
{
$('#menu-container-mini').slideDown('slow').css("display", "block");
}
}
}
lastScrollTop = st;
});
非常感谢您的帮助!
答案 0 :(得分:0)
如果您只想做一次,可以创建一个布尔值并将其初始设置为false。然后,滚动超过200像素后,检查变量是否为假,如果是,请调用slideDown(),然后将变量设置为true。
然后,如果你想要,你可以在向上滚动
后将变量设置为false*编辑:我发现错误,每次滚动你都在调用
//initialisation div caché :
$('#menu-container-mini').css("display", "none");
这就是你弹出窗口消失的原因。将该行移到$(窗口).scroll函数
上方