延迟之后的jQuery ScrollTop

时间:2014-01-27 21:06:42

标签: jquery ajax animation scrolltop

此代码可以很好地创建平滑滚动到我页面上的下一个锚点。

    <script type="text/javascript">  
    $("#blockTwo").on("click", ".child", function( e ) {
         $('html, body').delay(800).animate({
         scrollTop: $('#scrollThree').offset().top
         }, 1500, "swing"); 
    });
    </script>

但是,因为在click事件之后通过ajax加载了anchor元素中的内容,所以动画在中途跳跃。我想我可以通过向动画添加延迟来环绕这个问题,以便在动画开始之前加载内容。不确定这是一个好主意还是可行?

由于

1 个答案:

答案 0 :(得分:0)

您必须将事件监听器放在父级上,并在元素通过ajax放置在页面上后将其冒泡。

注意on()的第二个参数:

$(".parentElement").on("click", ".child", function( e ) {

因此,对于您的具体示例:

$("#blockOne").on("click", ".child", function( e ) {

这样,当.click通过ajax加载时,它将由其静态父#blockOne提供一个监听器。希望这是有道理的。