2014-09-25 86 views
0

我对滚动事件有一个普遍的疑问。jQuery滚动事件行为

让我们假设我有一个叫.notificationdiv。当用户滚动过去500时,我想添加一个类.ns--show。如果它们小于500,我想补充类.ns--hide,但前提是用户已经滚过500

这里是jQuery代码

$(window).scroll(function(){ 

    var st = $(this).scrollTop(); 

    if (st >= 500) { 
    $('.notification').addClass('ns--show'); 
    } else { 
    $('.notification').removeClass('ns--show').addClass('ns--hide'); 
    } 
}); 

我遇到的问题是,当浏览器加载时,scrollTop的值为0,所以它增加了类.ns--hide立即负荷和DOM的样子:

<div class="notification ns--hide"></div> 

有没有写这使得它的工作原理是“不添加ns--hide除非办法该用户滚动过去的500,然后滚动备份小于500"

注:因为我使用CSS过渡/是改变DIV看起来就躲类的方式变换,我不能简单地删除同一类ns--show

编辑:

我一个解决方案提出了基于以下岗位:

if (st >= 500) { 
if ($('.notification').hasClass('ns--hide')) { 
    $('.notification').removeClass('ns--hide').addClass('ns--show'); 
} else { 
    $('.notification').addClass('ns--show'); 
} 
} else { 
    if ($('.notification').hasClass('ns--show')) { 
    $('.notification').removeClass('ns--show').addClass('ns--hide'); 
    } 
} 
} 
+0

好的,看看这个问题,它与你的类似,看看是否有帮助 - http://stackoverflow.com/questions/25660289/show-hide-div-when-passed-the-other-div/ 25661103#25661103 – Tasos 2014-09-25 21:20:34

回答

2

您可以使用标志指示NS-显示被添加类。

例如:

$(window).scroll(function(){ 

    var st = $(this).scrollTop(); 

    if (st >= 500) { 
    $('.notification').removeClass('ns--hide');.addClass('ns--show class-added'); 
    } else { 
    if($('.notification').hasClass('class-added')) 
    $('.notification').removeClass('ns--show class-added').addClass('ns--hide'); 
    } 
}); 

类添加是一个标志,可以帮助你从滚动经过500px的认识。

希望它有帮助。

问候。

+0

谢谢!此行为仅适用于首次向上/向下传递。第二次你通过div是“通知ns - flip类加ns - hide”,然后当你再次向下滚动时,它变成了“通知ns - flip class-added ns - 隐藏ns - 显示“ – James 2014-09-25 21:25:02

+0

嗯,如果我理解正确的话,你可以解决它删除添加ns - show的类,更好地说,如果else条件为真。对? – 2014-09-25 21:28:17

+0

我需要它添加ns - 当它的过去500显示,并且删除ns - 显示并且添加ns - 当它小于500时隐藏,但是如果用户从0开始,ns-hide正在触发,我需要它只会在用户超过500并且回到500以下时才会触发。 – James 2014-09-25 21:30:57