我有一些jquery代码,当滚动位置不等于0时隐藏div。这很好用但是每当我在页面顶部快速向上和向下滚动,或者使用go to top of page链接时,事件似乎冒出来,让div出现并重新出现几次......有没有办法让它显示或消失,永远不会按顺序堆叠事件?
我尝试了stoppropogation(),但这似乎不起作用。也许我错误地实现了它。
$(window).scroll(
{
previousTop: 0
},
function () {
var currentTop = $(window).scrollTop();
if (currentTop == 0) {
$("#binding-info").fadeIn('slow');
} else {
$("#binding-info").fadeOut('slow');
}
this.previousTop = currentTop;
});
答案 0 :(得分:1)
这是因为jQuery队列动画和fadeIn/fadeOut
是动画。基本上,jQuery注册下一个动画,并在当前动画完成时执行。
要停止此操作,您可以在为对象设置动画之前使用.stop()
。
if (currentTop == 0) {
$("#binding-info").stop().fadeIn('slow');
} else {
$("#binding-info").stop().fadeOut('slow');
}
但是fadeIn
存在问题。如果您在达到1个不透明度之前执行fadeOut
,则会将其保留在数据中,并且不会再fadeIn
为1。
热修复方法是使用fadeTo()
:
$("#binding-info").stop().fadeTo('slow', 1);