You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现点击展开可折叠列表项时隐藏其他元素的需求

如何实现单开式可折叠列表?

需求说明

我需要实现一个可折叠列表,满足以下要求:

  • 当其中一个列表项展开时,自动隐藏其他所有列表的展开内容
  • 已展开的<div>被点击时,可切换为隐藏状态;再次点击对应按钮,能恢复展开状态

可折叠列表预期效果

当前实现代码

JavaScript

var coll = document.getElementsByClassName("collapsecontent");
var i;

for (i = 0; i < coll.length; i++) {
  coll[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var content = this.nextElementSibling;
    if (content.style.display === "block") {
      content.style.display = "none";
    } else {
      content.style.display = "block";
    }
  });
}

CSS

button.collapsecontent {
  display: block;
  background-color: orange;
  border-color: blue;
  border-radius: 20px;
  width: 87.5%;
  margin-left: 6.2%;
  margin-top: 1%;
  transition: ease-out 10s;
  /*transition broken*/
  cursor: pointer;
}

div.content {
  display: none;
  background-color: orange;
  margin-left: 6.2%;
  margin-right: 6.2%;
  padding: 5%;
  border: 2px solid blue;
  border-radius: 20px;
  cursor: pointer;
}

HTML

<ul class="contentbox">
  <!--content boxes-->
  <button class="collapsecontent" type="button"><li class="contentbox"><h1>Works</h1></li></button>
  <div class="content">
    <p>Example</p>
  </div>


  <button class="collapsecontent" type="button"><li class="contentbox"><h1>Other</h1></li></button>
  <div class="content">
    <p>Example2</p>
  </div>


  <button class="collapsecontent" type="button"><li class="contentbox"><h1>About</h1></li></button>
  <div class="content">
    <p>Example3</p>
  </div>


  <button class="collapsecontent" type="button"><li class="contentbox"><h1>Placeholder</h1></li></button>
  <div class="content">
    <p>Example4</p>
  </div>

</ul>

补充说明

除了折叠式方案,我也愿意接受其他能达成相同效果的实现方式。

内容的提问来源于stack exchange,提问作者M M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:54:58