Добро пожаловать в основанный на событиях нелинейный мир async !
$(this).delay(i * 100)
создает новый setTimeout()
.И это не вызывает приостановки всего сценария, иначе весь браузер зависнет на это время.JQuery предлагает несколько способов решения этой проблемы, но, как вы это делаете, это невозможно.Вам придется проверять каждый раз, когда fadeOut()
выполняется.
$("a.fadeout").click(function(event){
event.preventDefault();
var loc = this.href,
$stack = $(".faded").get().reverse();
//Do this first...
$($stack).each(function(i) {
$(this).delay(i * 100).fadeOut().queue(function() {
if($stack.lenght <= i+1) {
window.location = loc;
}
});
});
});
Проверьте его на jsFiddle .