2012-05-20 68 views
1

快速问题。即时尝试使用jquery动画几件事情,虽然它的工作,这是我有问题。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高度,而不是直接放入数字中?

任何提示,代码,链接等我会很乐意欣赏

回答

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/

这就是你所需要的..

+0

谢谢。我之前正在查看切换功能,但无法弄清楚要在参数中加什么东西。但是,这正如我试图达到的一样。谢谢。 – somdow

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

你应该离开了引号。

+0

你好Hidde,香港专业教育学院尝试过了,不工作。 – somdow

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'}); 
});