Это то, что сработало для меня (основываясь на @ ответ Алана )
var foo = $('ul.load_details'); // or whatever
var duration = "slow"; // or whatever
if (foo.css('visibility') == 'visible') {
foo.css({ opacity: 1 }).animate({ opacity: 0 }, duration, function () {
foo.css({ visibility: "hidden" });
});
} else {
foo.css({ opacity: 0 }).animate({ opacity: 1 }, duration).css({ visibility: "visible" });
}
Когда элемент foo
виден, затем медленно измените непрозрачность на ноль (через animate
), а затем подождите, пока это не будет сделано, прежде чем устанавливать видимость foo
для скрытия. В противном случае, если в процессе анимации установлено значение «скрытый», эффект затухания не произойдет, поскольку он сразу скрыт.
В качестве альтернативы вы можете использовать более простой, более чистый fadeTo () :
var foo = $('ul.load_details'); // or whatever
var duration = "slow"; // or whatever
if (foo.css('visibility') == 'visible') {
foo.fadeTo(duration, 0, function () {
foo.css({ visibility: "hidden" });
});
} else {
foo.fadeTo(duration, 1).css({ visibility: "visible" });
}