2012-05-23 52 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/

相关问题