2012-12-10 192 views
2

我嘗試執行我的網站上 http://www.cmclove.org/bootstrap的jQuery滾動到頂部動畫

但滾動到頂部動畫每當我滾動到頂部,並試圖回落好像滾動頁面正在打我,doesent希望回落。

你可能不得不這樣做了幾次,並或嘗試動畫完成

繼承人的jQuery後立即趕回向下滾動:

$(document).ready(function() { 
    $(function() { 

     /* set variables locally for increased performance */ 

     var scroll_timer; 
     var displayed = false; 
     var $message = $('#message a'); 
     var $window = $(window); 
     var top = $(document.body).children(0).position().top; 

     /* react to scroll event on window */ 
     $window.scroll(function(e) { 

      window.clearTimeout(scroll_timer); 
      e.preventDefault(); 
      scroll_timer = window.setTimeout(function(e) { 
       if ($window.scrollTop() <= top) { 
        displayed = false; 
        $message.fadeOut(800); 
        e.preventDefault(); 

       } 
       else if (displayed == false) { 
        displayed = true; 
        $message.stop(true, true).show(1000).click(function(e) { 
         $('html, body').animate({ 
          scrollTop: 0 
         }, 'slow'); 
         $message.fadeOut(1000); 
         e.preventDefault(); 


        }); 
       } 

      }, 100); 
     }); 
    }); 
});​ 

繼承人的HTML

<a id="top"></a> 

    <!--- all my html stuff --> 

    <div id="message"><a href="#top"></a></div> 
    </footer> 
+0

您是否必須在滾動動畫中選擇「html」和「body」? – sethetter

+0

與'return false'不同,'preventDefault()'通常放在函數的頂部。另外,一個jsFiddle演示會很有幫助。 – Sparky

+0

是的,我有滾動動畫中選擇的HTML正文是因爲即時通訊沒有添加防止默認的功能,導致錯誤的頂部? – user1502223

回答

1

我知道發生了什麼事。每次「滾動到頂部」時都會綁定一個新的「點擊」事件。而且,由於它們加起來,每次滾動條凍結1秒鐘以上。所以當你第一次翻到頂部時,沒有任何東西凍結。下一次凍結第二,下一次2秒等

我想你需要:

$message.unbind('click'); 

權之前:

$message.stop(true, true).show(1000).click(function(e) { 

即:

else if (displayed == false) { 
    displayed = true; 
    $message.unbind('click'); 
    $message.stop(true, true).show(1000).click(function(e) { 
    ... 

如果您不相信我,請將其凍結幾次,然後在Firebug控制檯中輸入:

$('#message a').unbind('click'); 

並再試一次。你會看到凍結消失了(直到你用多次綁定'click'事件再次累積它)。

乾杯。

+0

工作!感謝人 – user1502223

+0

也注意到'e.preventDefault();'在定時器函數內調用會拋出一個錯誤:e未定義。 –

+0

是啊我修復了,我發佈了這個問題後,我也採取了其他人的建議,並添加了防止默認權限後的功能... IM仍然是新的jQuery和學習所有適當的語法和東西 – user1502223