2013-11-26 29 views
0

我有我的Rails应用程序的所有页面出现,并淡出加载GIF一旦页面完全加载:Jquery的:接连触发功能齐全

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}); 

,因为装载淡出出现在每一页上我不能直接IT连锁到装载淡出,而我只需要它来只在滚动步骤索引页面。无论我做什么都必须是项目/ index.html.erb文件的一部分,而不是application.html.erb

我怎样才能触发JavaScript代码只有另一个已经完成(和在一个单独的功能)?

回答

1

为加载元素的fx队列承诺对象添加完成的回调。

// 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}); 
    }); 
}); 
+0

不知道承诺;这为我工作了一些额外的额外超时! – scientiffic