2014-10-06 58 views
0

我必须使用modalbox对话框以及fadout模式框叠加,并且必须在同一时间发生,因此不可能在幻灯片的完成函数中执行淡出首先在两个html元素上做滑动和淡出,然后继续

$('#modalbox-dialog').slideUp({ 
    done:function() { 

    } 
}); 

$('#modalbox-overlay').fadeOut(); 

后效果基本show和淡出完成这些事情必须进行

$('.nav > *').remove(); 
$('#foo-helper > *').remove(); 
$(FilterView.currentDiv).insertAfter('#hidden-divs-helper'); 
FilterView.currentDiv = ''; 
+0

你可以把两个动画的持续时间,也投入了延迟上滑动画等于持续时间。所以他们都在同一时间运行。 – Darren 2014-10-06 11:40:22

+0

我首先用setTimeout对它进行了编程,并在400ms后执行了第二个代码块,因为持续时间是400,但是我想制作一个交叉解决方案......这样我就不能总是改变settimeout时间 – 2014-10-06 11:42:20

+0

Don不使用超时。使用slideUp和fadeOut的属性。检查文档的使用情况 – Darren 2014-10-06 11:45:33

回答

0

使用$.when()

$(document).ready(function() { 
    var f1 = $('#modalbox-dialog').slideUp({duration:10000}) 
    var f2 = $('#modalbox-overlay').fadeOut(); 

    $.when(f1, f2).done(function (v1, v2) { 
     alert('finished both'); 
    }); 
}); 

看到这个小提琴:http://jsfiddle.net/oLm8L1pL/

我设置持续时间特别高,以演示效果。

0

这是我的解决方案

hide: function() { 

    var deferred = $.Deferred(); 

    var slideUp = $('#modalbox-dialog').slideUp(); 
    var fadeOut = $('#modalbox-overlay').fadeOut(); 

    $.when(slideUp, fadeOut).done(function() { 
     deferred.resolve(); 
    }); 

    return deferred.promise(); 
} 

希望它有助于进一步的问题:)