Это то, что работает для меня (на основе @Alan's answer)
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" });
}
что вы хотите достичь? – erenon
-1 jieren Я думаю, вы могли бы взглянуть на некоторые учебники или документацию jQuery, прежде чем задавать вопрос и, возможно, формулировать свои вопросы с указанием своих целей, таких как erenon, предлагает – Michiel
@Erenon: на основе примера кода кажется весьма вероятным, что он хочет исчезать от невидимого до видимого. – jrista