我有一个加载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代码?
答案 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});
});
});