为什么 :visible 和 hide/show 不起作用? jquery

Why :visible and hide/show does not work? jquery

我需要切换主 div(黑色),它应该得到左侧的大小。如果右侧可见,则应将其隐藏或在不可见时显示。我写了以下 jquery 但它不起作用。

$(document).ready(function(){
    $("#btn").click(function(){
        $("#mainDiv").toggleClass("main", function(){
            if($("#rightSide").is(":visible")){
                $("#rightSide").hide('slow');
            } else{
                $("#rightSide").show('slow');
            }
        });
    });
});

以下代码有效,但当右侧首先出现在 div 底部时,并创建滚动几秒钟。是否可以让它与 main div

一起切换
$(document).ready(function(){
    $("#btn").click(function(){
        $("#mainDiv").toggleClass("main");
            $("#rightSide").toggle();

    });
});

基本上您是在尝试 show/hide 单击按钮时的#rightSide。因此,您想要 "collapse" 和 "expand"(不切换)#mainDiv。 collapse/expand 与 javascript 或 jquery 无关。这是一个 CSS 设置,其中所有 3 个 div 的宽度和浮动设置为主要 div 与内部可见的 div 一样宽。

$(function() {
  $("#btn").click(function() {
    $("#rightSide").toggle("slow");
  });
});
#mainDiv {
  height: 100px;
  border: 5px solid black;
  display: inline-block;
  box-sizing: border-box;
}

#leftSide {
  border: 2px solid red;
  float: left;
  width: 100px;
  height: 100%;
  background-color: pink;
  padding: 10px;
  color: red;
  box-sizing: border-box;
}

#rightSide {
  border: 2px solid green;
  float: right;
  width: 300px;
  height: 100%;
  background-color: lightgreen;
  padding: 10px;
  color: darkgreen;
  box-sizing: border-box;
}

$btn {
  margin-top: 10px;
  diaplay: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="mainDiv">
  <div id="leftSide">
    Left Side
  </div>
  <div id="rightSide">
    Right Side
  </div>
</div>
<button type="button" id="btn">Show/Hide</button>