我不是最伟大的jQuery的艺术家要么,但我认为这应该工作:
var mywindow = $(window);
var mypos = mywindow.scrollTop();
mywindow.scroll(function() {
if(mywindow.scrollTop() > mypos)
{
$('.myDIV').fadeOut();
}
else
{
$('.myDIV').fadeIn();
}
mypos = mywindow.scrollTop();
});
你可以看到mypos
更新每次用户滚动时,向上或向下。 http://jsfiddle.net/GM46N/2/:
编辑
我在在拨弄你的要求做了一些更新。你可以在小提琴的js部分看到我已经提出了两个选择 - 一个是.fadeIn()
和.fadeOut()
(这次工作 - 在我的网站上我提供的代码没有运行),第二个是使用.slideToggle()
。
下面是更新JS:
var mywindow = $(window);
var mypos = mywindow.scrollTop();
var up = false;
var newscroll;
mywindow.scroll(function() {
newscroll = mywindow.scrollTop();
if (newscroll > mypos && !up) {
$('.header').stop().slideToggle();
up = !up;
console.log(up);
} else if(newscroll < mypos && up) {
$('.header').stop().slideToggle();
up = !up;
}
mypos = newscroll;
});
我还添加了一个额外的变量,up
,只有触发事件时,切换时会触发用户滚动了第一次,下一次是当他向下滚动等等。否则,这些事件会被触发(您可以使用前面的代码对.slideToggle()
进行测试以查看大量的事件触发)。
重新编辑:我还添加了.stop()
,所以现在如果还有运行效果被首先停止,以防止滞后,如果用户快速向上滚动向下&的效果。
一个选项是将'.scrollTop()'值存储在一个额外的变量中。然后当滚动时,检查新的'.scrollTop()'是否大于或小于存储的值,并做相应的事情并存储新的值。 – jdepypere
唯一的问题是,我用jQuery不太好。 – Maaz
'jQuery(this).scrollTop()> 0' ??你什么时候认为你的scrollTop将会小于'0' – exexzian