2012-05-23 76 views
0

我目前正在使用以下代碼自動滾動到滑動檢測腳本的回調頂部。我想添加在用戶在動畫過程中單擊屏幕時取消動畫的功能。點擊取消滾動到頂部動作

$('body,html').animate({ 
    scrollTop: 0 
}, 300); 

我將如何完成此取消?

+0

可能重複[在用戶交互後取消滾動](http://stackoverflow.com/questions/6160058/cancel-scrolling-after-user-interaction) –

回答

1

使用stop方法停止動畫。請確保通過false獲得jumpToEnd參數,以便用戶不會自動進入屏幕頂部。

$(function() { 
    //Substitute with whatever kicks off this scroll in your app. 
    $('button').on('click', function(evt) { 
     $('body,html').animate({ 
      scrollTop: 0 
     }, 3000); 

     evt.stopPropagation(); 
    }); 

    $(window).on('click', function(evt) { 
     $('body,html').stop(); 
    }); 
}); 

活生生的例子 - http://jsfiddle.net/FcLbH/2/

編輯 - 刪除了參數stop每@ AVL的評論。

+0

那麼,這正是我所說的:http://jsfiddle.net/DJ8Re/ – AvL

+0

點擊演示中的按鈕時,您的示例不會停止傳播。在你的回答中,你不會傳遞'''''false''作爲'''jumpToEnd'''來阻止動畫自動將用戶帶到屏幕的頂部。 –

+0

也許我錯了,但由於隊列中沒有其他東西,所以我們不需要可選參數'clearQueue'。 'jumpToEnd'默認爲'false'。我的jsfiddle按要求工作... – AvL

0

也許是這樣的:

$('body,html').animate({ 
    scrollTop: 0 
}, 3000).click(function() { 
    $('body,html').stop(); 
}); 

例如:http://jsfiddle.net/DJ8Re/1/

0

我不太肯定點擊檢測,無論如何,這將在3秒後停止動畫:

$('body,html').animate({ 
    scrollTop: 0 
}, 6000); 

setTimeout(function() { $('html,body').stop(); }, 3000); 

有關停止所有的信息()的http://api.jquery.com/stop/

相關問題