2013-12-17 228 views
-4

嗨Im新的JQuery和語句,我似乎無法讓我的代碼工作我敢肯定它的事情次要的是錯誤,但我不能看到什麼問題正是在這裏是我的代碼JQuery Else if語句?

$(window).scroll(function() { 
    if ($(this).scrollTop() >= 400) { 
     $('.BOX').animate({ 
      marginLeft: 500, 
      marginRight: 0, 
      display: 'toggle' 
     }, 5000); 
    } else if ($(this).scrollTop() < 400) { 
     $('.BOX').animate({ 
      marginLeft: 0, 
      marginRight: 0, 
      display: 'toggle' 
     }, 5000); 
    } 
}); 

如果您能指出我正確的方向,請提前致謝。

http://jsfiddle.net/b6KuE/86/ - Scrolltop> 400播放動畫我想要做的是反向動畫時,其小於400回到0離開。

+3

你開始在'scroll'事件,這意味着它會保持與每一個新的調用重挫本身動畫當滾動發生時。 –

+1

你能告訴我們一些問題是什麼問題?一些控制檯錯誤輸出,任何幫助。如果您沒有提供足夠的信息,我們無法幫助您。 – Loyalar

+0

嘗試檢查.BOX頁邊距,如果它的動畫像[this](http://jsfiddle.net/b6KuE/88/) –

回答

-1

$(this)究竟是指什麼?

試試這個:

$(window).scroll(function() { 
    if ($(window).scrollTop() >= 400) { 
     $('.BOX').animate({ 
      marginLeft: 500, 
      marginRight: 0, 
      display: 'toggle' 
     }, 5000); 
    } else if ($(window).scrollTop() < 400) { 
     $('.BOX').animate({ 
      marginLeft: 0, 
      marginRight: 0, 
      display: 'toggle' 
     }, 5000); 
    } 
}); 

此外,你必須在這個問題上已經相當了否定的答覆。嘗試並幫助我們來幫助你。如果你說你得到一個錯誤,它可能有助於準確地說出那個錯誤是什麼。其他方面,我們只是第二次猜測。

+2

'this'這裏指的是'window'對象。 – undefined

+0

@undefined是的,正確的 – user3112634

0

正如評論中提到的那樣,滾動事件處理程序會在窗口滾動時反覆調用,所以動畫會一遍又一遍地重新開始。這些動畫會排隊等候,所以當你滾動到足以讓它在另一個方向上動起來時,在你看到它動起來之前已經很長時間了,而且它可能永遠不會因爲溢出而產生動畫。

您需要重新啓動前停止動畫:

$(window).scroll(function() { 
    if ($(this).scrollTop() >= 400) { 
     $('.BOX').stop().animate({ 
      marginLeft: 500, 
      marginRight: 0, 
      display: 'toggle' 
     }, 5000); 
    } else if ($(this).scrollTop() < 400) { 
     $('.BOX').stop().animate({ 
      marginLeft: 0, 
      marginRight: 0, 
      display: 'toggle' 
     }, 5000); 
    } 
}); 

jsfiddle