Jquery:触发函数接连完成

时间:2013-11-26 18:57:29

标签: jquery ruby-on-rails

我有一个加载gif出现在我的rails应用程序的所有页面上,并在页面完全加载后淡出:

application.html.erb

$(window).load(function(){

    // remove loading animation
    if($('#loading').css('display')!='none'){
        $('#loading').fadeOut(400, function(){
           $('#main').animate({opacity:1});
    });
    }

在某些页面上,我想确保在加载图标已经淡出之后才会触发事件。例如,当我加载项目页面时,我想在加载图标完成后滚动到页面中间,以便用户看到滚动动画。

项目/ index.html.erb

   $('.projectView').animate({scrollTop: $('.question_accordion').position().top});

我无法将其直接链接到加载fadeOut,因为加载fadeOut出现在每个页面上,我只需要它只在步骤索引页面上滚动。无论我做什么都必须是project / index.html.erb文件的一部分,而不是application.html.erb

如何在另一个完成后(以及在单独的函数中)触发javascript代码?

1 个答案:

答案 0 :(得分:1)

为load元素的fx队列promise对象添加一个完成回调。

// to ensure we run this right after the fadeOut is started
$(window).load(function(){
    $("#loading").promise().done(function(){
        $('.projectView').animate({scrollTop: $('.question_accordion').position().top});
    });
});