JS切换Div高度

时间:2016-01-25 00:49:15

标签: javascript jquery

我这里有一个小脚本来改变我的Div的高度,但实际上它只会变小。如何切换它以使其再次升高?

$( ".div1" ).click(function() {

$(".div2").animate({
    height: ($(this).height() == 40) ? 10 : 40
}, 200);

});

4 个答案:

答案 0 :(得分:2)

问题是$(this)是指$( ".div1" )而不是$( ".div2" )

   $( ".div1" ).click(function() {

    $(".div2").animate({
        height: $(".div2").height() == 40 ? 10 : 40
    }, 200);

    });

完整的Codepen:https://codepen.io/anon/pen/zrRboZ

答案 1 :(得分:0)

您可以使用if-then声明:



$(document).ready(function() {
  var boolean = false;
  $(".div1").click(function() {
    boolean = !boolean;
    if (boolean) {
      $(".div2").animate({
        height: "+=20px"
      }, 200);
    } else {
      $(".div2").animate({
        height: "-=20px"
      }, 200);
    }
  });
  
});

.div1 {
  background-color: red;
}
.div2 {
  background-color: blue;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="div1">Foo</div>
<div class="div2">Bar</div>
&#13;
&#13;
&#13;

此外,我会使用相对height,因此它会更改回相同的值。

答案 2 :(得分:0)

这可能有点模糊,但您可以使用模运算。

请注意:

(40 + 30) % 60 == 10
(10 + 30) % 60 == 40
(40 + 30) % 60 == 10

等等

所以,换句话说,你可以做到

$( ".div1" ).click(function() {
    $(".div2").animate({
        height: ($(".div2").height()+30)%60
    }, 200); 
});
PS:小心使用它,如果你不清楚你可能指的是另一个对象,在这种情况下,$(&#34; .div1&#34;)

答案 3 :(得分:0)

你可以使用toggleClass:

 .div2{height:40px;}
 .div2.smaller{height:10px;}


 $('.div1').click(function(){$('.div2').toggleClass('smaller');});