滚动后如何执行函数(jquery)

时间:2015-01-17 09:07:03

标签: javascript jquery

我需要滚动页面然后执行一个函数。这段代码给了我一个错误

No function was found that matched the signature provided.

window.scrollTo(0, 100, {
   onAfter : function(){
      alert('test');
   }
});

如果删除第三个(设置)参数,则页面会滚动。我也尝试过:

$('html,body').animate({
 scrollTop: 100,
 complete: function(){alert();}
}, 0);

它滚动页面,但从不调用警报。

也许我错过了一些小事,但我不知道它是什么!有很多例子,但似乎没有一个对我有用。它们通常有额外的参数和设置,除了jQuery之外,我还不清楚是否有些人使用特殊的库。

编辑:2个要求:它必须是即时滚动,并且在完成后必须有回调函数。只是在下一行写下一个函数不起作用。我的iPhone仍然无序,我猜因为scrollTop仍然很慢。

3 个答案:

答案 0 :(得分:1)

jsfiddle

$('body').animate({
    scrollTop: 10000
    }, 0,

    function () {
        alert("hi");
    }
);

答案 1 :(得分:0)

这不是.animate()方法的工作原理。从官方jQuery文档(http://api.jquery.com/animate/):

.animate( properties [, duration ] [, easing ] [, complete ] )

您需要将成功回调作为单独的参数传递,而不是第一个的属性。另外,为什么0持续时间?

试试这个:

$('html,body').animate(
    {scrollTop: 100},
    function () {
        alert();
    }
);

如果你打算在没有动画的情况下这样做,那就是.scrollTop()方法(http://api.jquery.com/scrolltop/):

$('html,body').scrollTop(100);

答案 2 :(得分:0)

使用animate的解决方案对我不起作用-该功能在滚动之前已执行。因此,我只是利用了同步性,并编写了两个工作版本的代码:

$(window).scrollTop(0);
       
alert('test');

或第二个版本,并选中if

$(window).scrollTop(0);
        
if ($(window).scrollTop() === 0) {
    alert('test');
}