jQuery切换和动画不工作

时间:2013-01-10 08:31:02

标签: jquery-animate jquery

以下jQuery代码有什么问题?

<script type="text/javascript">
  $("#contact_min").click(function(){
    $("#contact_min").toggle(function(){
      $("#contact_min").animate({
        height: "300px"
      }, 1500 );
    $(".arrow").html("&#x25bc;")}
    function(){
      $("#contact_min").animate({height: "28px"}, 1500 );
      $(".arrow").html("&#x25B2;")
    })});
</script>

当我点击contact_min div时,它什么也没做。

HTML:

<div id="contact_min">
  <span class="arrow">&#x25B2;</span>
  <span class="text">foobar</span>
</div>

3 个答案:

答案 0 :(得分:5)

它什么都不做。它绑定了另一个事件来处理点击。当你再次点击它时你会看到发生的事情,但它会绑定另一个事件。之后,每次点击都会有多个处理程序执行相反的操作,每次点击都会绑定更多的处理程序。

只需删除click方法调用,toggle方法会为点击事件绑定一个事件:

<script type="text/javascript">
$("#contact_min").toggle(function(){
  $("#contact_min").animate({
    height: "300px"
  }, 1500 );
  $(".arrow").html("&#x25bc;")
},
function(){
  $("#contact_min").animate({
    height: "28px"
  }, 1500 );
  $(".arrow").html("&#x25B2;")
});
</script>

答案 1 :(得分:1)

没有.toggle动画我觉得你需要做类似的事情:

$("#contact_min").click(function(){
  var height = $("#contact_min").attr("height");
  if height!=28px
  {
   $("#contact_min").animate({
    height: "28px"
    }, 1500 );
  $(".arrow").html("&#x25B2;");
  }
  else
  {
  $("#contact_min").animate({
    height: "300px"
    }, 1500);
  $(".arrow").html("&#x25bc;")
});

答案 2 :(得分:0)

删除点击功能,因为切换已经有一个互换点击事件。

所以它会是:

<script type="text/javascript">
 $("#contact_min").toggle(function(){
 $("#contact_min").animate({
 height: "300px"
 }, 1500 );
 $(".arrow").html("&#x25bc;")
 }
 function(){
 $("#contact_min").animate({
 height: "28px"
 }, 1500 );
 $(".arrow").html("&#x25B2;")
 });
 </script>