我正在使用它来显示.antwort并将动画应用于其不透明度。这很好用。但是,再次单击时,会立即隐藏.antwort而不显示任何动画。我做错了什么?
jQuery(document).ready(function ($) {
$(".frage li").click(function () {
if (!$(this).find(".antwort").is(".open")) {
$(this).find(".antwort").css({
display: "block"
});
$(this).find(".antwort").animate({
opacity: 1
}, 1500).addClass('open');
} else {
$(this).find(".antwort").animate({
opacity: 0
}, 1500).removeClass('open');
$(this).find(".antwort").css({
display: "none"
});
}
return false;
});
});
答案 0 :(得分:3)
在指定display none之前,您应该等待动画完成,否则display none将立即生效,您将无法看到动画(该元素已被隐藏)。 使用animate方法的回调函数,如下所示:
jQuery(document).ready(function ($) {
$(".frage li").click(function () {
if (!$(this).find(".antwort").is(".open")) {
$(this).find(".antwort").css({
display: "block"
});
$(this).find(".antwort").animate({
opacity: 1
}, 1500).addClass('open');
} else {
$(this).find(".antwort").animate({
opacity: 0
}, 1500, function() {
// Animation complete.
$(this).hide()
}).removeClass('open');
}
return false;
});
});
答案 1 :(得分:1)
只需使用fadeToggle()
$(".frage li").click(function() {
$(this).find(".antwort").fadeToggle();
return false;
});