【问题标题】:Expand / Collapse div by clicking another通过单击另一个展开/折叠 div
【发布时间】:2016-05-17 17:40:25
【问题描述】:

我希望创建一个在单击完全独立的非父 div 元素时展开和折叠的 div。

下面是我喜欢并一直在搞乱的扩展/折叠效果的示例。我不确定如何最好地修改下面的代码,以便我可以点击位于侧边栏中的 div,并导致位于标题下方的另一个 div 展开/折叠,将其下方的所有内容向下推。

相关的展开/折叠 div 的内容可能是一个搜索栏,例如,用户可以通过单击侧边栏按钮来显示/隐藏它。

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

    $header = $(this);
    //getting the next element
    $content = $header.next();
    //open up the content needed - toggle the slide- if visible, slide up, if not slidedown.
    $content.slideToggle(500, function () {
        //execute this after slideToggle is done
        //change text of header based on visibility of content div
        $header.text(function () {
            //change text based on condition
            return $content.is(":visible") ? "Collapse" : "Expand";
        });
    });

});
.container {
    width:100%;
    border:1px solid #d3d3d3;
}
.container div {
    width:100%;
}
.container .header {
    background-color:#d3d3d3;
    padding: 2px;
    cursor: pointer;
    font-weight: bold;
}
.container .content {
    display: none;
    padding : 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div class="container">
    <div class="header"><span>Expand</span>

    </div>
    <div class="content">
        <ul>
            <li>I'm putting a search bar here.</li>
            
        </ul>
    </div>
</div>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    $(".header").click(function() {
      $('.content').slideToggle().toggleClass('active');
      if ($('.content').hasClass('active')) {
        $('.header span').text('Collapse');
      } else {
        $('.header span').text('Expand');
      }
    });
    $('button').click(function(){
    	$(".header").trigger('click');
    })
    .container {
        width:100%;
        border:1px solid #d3d3d3;
    }
    .container div {
        width:100%;
    }
    .container .header {
        background-color:#d3d3d3;
        padding: 2px;
        cursor: pointer;
        font-weight: bold;
    }
    .container .content {
        display: none;
        padding : 5px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    
    <div class="container">
        <div class="header"><span>Expand</span>
    
        </div>
        <div class="content">
            <ul>
                <li>I'm putting a search bar here.</li>
                
            </ul>
        </div>
    </div>
      <button>another click</button>

    【讨论】:

    • 不客气,兄弟,如果解决了你的问题,请采纳;)
    【解决方案2】:

    $(".toggle").click(function () {
    
        
        //getting the content 
        $content = $(".content")
        //open up the content - toggle the slide- if visible, slide up, if not slidedown.
        $content.slideToggle(500, function () {
            //execute this after slideToggle is done
            //change text of header based on visibility of content div
            $header.text(function () {
                //change text based on condition
                return $content.is(":visible") ? "Collapse" : "Expand";
            });
        });
    
    });
    .container {
        width:100%;
        border:1px solid #d3d3d3;
    }
    .container div {
        width:100%;
    }
    .container .header {
        background-color:#d3d3d3;
        padding: 2px;
        cursor: pointer;
        font-weight: bold;
    }
    .container .content {
        display: none;
        padding : 5px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    
    <div class="container">
        <div class="header"><span>Expand</span>
    
        </div>
        <div class="content">
            <ul>
                <li>I'm putting a search bar here.</li>
                
            </ul>
        </div>
    <div class="toggle">click me</dov>
    </div>

    【讨论】:

    • 这就是你想要的。我只是问,因为这是非常基本的东西
    • 是的,这就是我所追求的。我想这是基本的东西,但我对此很陌生(如果这不是很明显的话),所以谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 2011-09-18
    • 2018-03-10
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多