2014-10-06 1 views
0

Мне нужно сдвинуть modalbox-dialog, а также fadout modalbox-overlay, и это должно произойти в одно и то же время, чтобы не было возможного уменьшения яркости в сделанной функции слайд-шоусначала сделайте слайд-шоу и fadeout на два html-элемента, затем продолжайте

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

    } 
}); 

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

после slideup и Fadeout сделаны эти вещи должны быть выполнены

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

Вы можете поставить продолжительность на обеих анимаций, а также поставить задержку на слайде вверх анимации, равной длительности. Поэтому они оба работают одновременно. – Darren

+0

Я сначала запрограммировал его с помощью setTimeout и выполнил второй код после 400 мс, потому что продолжительность 400, но я хотел бы сделать перекрестное решение ... так что я не должен постоянно менять время установления времени –

+0

Don t использовать таймаут. Используйте свойства slideUp и fadeOut. Проверьте документы для использования – Darren

ответ

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

надеюсь, что это помогает для дальнейших вопросов :)