1

快速提问。我试图用 jquery 为一些东西制作动画,虽然它可以工作,但这是我遇到的问题。

首先继承代码:

$(document).ready( function(e){

    // vars
    var question = $('#faqQues');
    var answer = $('#faqAns');  
    var ansCont = $('#faqAnsCont');


    question.click(function(){
         if (answer.css("display") != "none") {
             answer.animate({'height':0}, 500, hmm);

             function hmm() {
                 answer.css("display","none");  
             } 
         } else {
             answer.css("display","block");
             answer.animate({"height":'100'},500);  
         }
    });
});

基本上我想要做的就是能够点击某些东西并为其高度设置动画(向上向下)。问题出现在这个代码块上

else {
    answer.css("display","block");
    answer.animate({"height":'100'},500);               
}

特别是在这条线上

{"height":'100'}

我想要发生的是它动画回到 div 的默认高度。我不想添加数字(like the 100 above)高度,因为 div 内部内容总是会改变,因此动态高度但是如果我删除高度,它会中断。我尝试了其他一些事情,包括也许

.animate({"height":'**divNameHere**.height()'},500);

但是虽然它没有出错,但它也不起作用大声笑。

所以我在这里寻求帮助。我需要对此进行哪些更改,以便在不直接输入数字的情况下将其动画化回 div 的高度?

任何提示、代码、链接等我都会很高兴

4

3 回答 3

3

你为什么不使用slideUp()slideDown()方法来做你想要的?

或者更好slideToggle()的是自动处理两种方式?

$(document).ready(function(e) {
    // vars
    var question = $('#faqQues');
    var answer = $('#faqAns');
    var ansCont = $('#faqAnsCont');

    question.click(function() {
        answer.slideToggle(500);
    });
});

演示在http://jsfiddle.net/5wBeu/

这就是你所需要的。。

于 2012-05-20T13:03:00.520 回答
0
.animate({"height": $('**divNameHere**').height()},500); 

你应该省略引号。

于 2012-05-20T13:01:08.940 回答
0
$(document).ready(function() {

    // vars
    var question = $('#faqQues');
    var answer = $('#faqAns');  
    var ansCont = $('#faqAnsCont');

    question.click(function(){
        if (answer.is(':visible')) {
            answer.animate({height : 'toggle'}, 500, function() {
                answer.hide();
            });
        }else {
            answer.show().animate({height : 'toggle'},500);   
        }
    });
});

要不就 :

question.click(function() {
    answer.animate({height : 'toggle'});
});
于 2012-05-20T13:01:34.323 回答