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

jQuery实现按钮点击控制元素显隐 切换低序号自动移除高序号元素

问题根因

现有代码仅实现了「显示小于等于当前点击序号的元素」逻辑,缺失了「隐藏大于当前点击序号的高序号元素」的步骤,因此点击低序号按钮回退时,之前已经显示的高序号元素不会被移除。

修复方案

仅需要在原有点击事件逻辑中,补充对高序号元素的隐藏处理即可,核心逻辑是通过jQuery的slice(c)选中所有索引从c开始的高序号add-item元素,为其添加inactive类实现隐藏。

修复后完整代码

CSS 样式

.active {
  display: block;
  background-color: blue;
}
.inactive {
  display: none;
}

HTML 结构

<button class="child-item click-item-1">Click 1</button>
<button class="child-item click-item-2">Click 2</button>
<button class="child-item click-item-3">Click 3</button>
<button class="child-item click-item-4">Click 4</button>
<button class="child-item click-item-5">Click 5</button>

<div class="add-item inactive">Add 1</div>
<div class="add-item inactive">Add 2</div>
<div class="add-item inactive">Add 3</div>
<div class="add-item inactive">Add 4</div>
<div class="add-item inactive">Add 5</div>

<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>

JS 交互逻辑

let clickItem;
for (let c = 1; c < 6; c++) {
  clickItem = document.getElementsByClassName('click-item-' + c);
  $(clickItem).on('click', function() {
    // 切换按钮激活态
    $('.child-item').not(this).removeClass('active');
    $(this).addClass('active')
    // 保留当前序号及之前的元素显示
    $(".add-item").slice(0, c).removeClass("inactive");
    // 隐藏所有序号高于当前点击值的元素
    $(".add-item").slice(c).addClass("inactive");
  })
}
逻辑验证
  • 点击按钮5时,所有5个add-item元素都移除inactive类,正常展示5个新增元素
  • 后续点击click3按钮时,前3个add-item保持显示,第4、5个add-item被加上inactive类隐藏,完全符合预期效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:21:28