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

如何用JavaScript/jQuery实现关联元素的内容显隐切换?

可扩展折叠面板完整实现方案

步骤1:基础样式(CSS)

通过CSS实现内容默认隐藏,以及选中标题的高亮样式:

/* 默认隐藏所有内容区块 */
.myContents {
  display: none;
}

/* 激活状态的标题样式(可自定义颜色/字体) */
.triggers.active {
  color: #e74c3c;
  font-weight: bold;
}

步骤2:保持原有HTML结构

你的HTML结构无需修改,只要保持titleN和contentN的ID对应规则即可:

<h3 id="title1" class="triggers">Title 1</h3> 
<h3 id="title2" class="triggers">Title 2</h3> 
<h3 id="title3" class="triggers">Title 3</h3>

<p id="content1" class="myContents">Content 1</p> 
<p id="content2" class="myContents">Content 2</p> 
<p id="content3" class="myContents">Content 3</p>

步骤3:jQuery逻辑实现

以下代码完全满足所有需求,且支持任意数量的标题/内容扩展:

$(document).ready(function() {
  // 给所有标题绑定点击事件
  $('.triggers').click(function() {
    // 从标题ID中提取编号,自动关联对应内容
    const itemIndex = $(this).attr('id').replace('title', '');
    const targetContent = $('#content' + itemIndex);
    
    // 判断当前标题是否处于激活状态
    const isCurrentActive = $(this).hasClass('active');
    
    // 重置所有标题和内容的状态:取消激活、隐藏内容
    $('.triggers').removeClass('active');
    $('.myContents').hide();
    
    // 如果当前标题未激活,则激活它并显示对应内容;否则保持隐藏状态
    if (!isCurrentActive) {
      $(this).addClass('active');
      targetContent.show();
    }
  });
});

需求对应说明

  • 需求1:通过CSS的display: none默认隐藏所有.myContents元素
  • 需求2:点击标题时,给当前标题添加active类实现变色,同时显示对应内容
  • 需求3:每次点击先全局重置所有标题和内容的状态,再处理当前点击项,确保同一时间仅显示一个内容
  • 需求4:通过判断当前标题是否有active类,实现“点击切换”逻辑:已激活则取消,未激活则激活
  • 需求5:通过提取标题ID中的数字部分,自动拼接对应内容的ID,只要保持titleN和contentN的命名规则,即使扩展到几十条也无需修改代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:25:07