0

我目前正在使用以下代码在滑动检测脚本的回调中自动滚动到顶部。我想添加在动画期间用户单击屏幕时取消动画的功能。

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

我将如何完成此取消?

4

3 回答 3

1

使用stop方法停止动画。确保传递参数falsejumpToEnd这样用户就不会被自动带到屏幕顶部。

$(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 的评论删除了参数。

于 2012-05-23T14:32:04.203 回答
0

也许是这样的:

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

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

于 2012-05-23T14:26:41.650 回答
0

我不太确定点击检测,无论如何,这将在 3 秒后停止动画:

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

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

有关 stop() 的所有信息:http: //api.jquery.com/stop/

于 2012-05-23T14:59:37.090 回答