2014-09-25 83 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