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

jQuery多按钮点击显隐元素的通用精简代码实现方案

按钮显隐切换逻辑重构方案

重构核心逻辑是把重复的交互流程抽成统一公共逻辑,可变的操作目标通过配置或DOM自定义属性维护,既完全保留原有交互效果,又能实现全局复用,后续新增同类型交互不需要重复写逻辑。


方案1:零修改原有DOM结构

不需要改动现有HTML代码,只需要把原有重复的JS替换为如下代码即可,后续新增交互组只需要在配置数组里加对应项:

// 统一维护所有切换组的映射关系
const toggleConfig = [
  { activeBtn: '.show', oppositeBtn: '.hide', content: '.helloworld', isShow: true },
  { activeBtn: '.hide', oppositeBtn: '.show', content: '.helloworld', isShow: false },
  { activeBtn: '.ok', oppositeBtn: '.cancel', content: '.thanks', isShow: true },
  { activeBtn: '.cancel', oppositeBtn: '.ok', content: '.thanks', isShow: false }
]

// 统一绑定事件,无重复逻辑
toggleConfig.forEach(item => {
  $(item.activeBtn).click(function() {
    $(this).addClass('inactive')
    $(item.oppositeBtn).removeClass('inactive')
    $(item.content).toggleClass('inactive', !item.isShow)
  })
})

方案2:全局通用可扩展(推荐)

只需要给原有按钮加统一类名和自定义数据属性,后续新增任意多组切换交互,都不需要再写JS代码,纯写HTML即可实现相同效果。

调整后的HTML结构(样式完全不变)

<style>
.inactive{
  display:none;
}
button{
  padding:5px 25px;
  color: #fff;
  background-color:#1d9bf0;
  margin-top: 10px;
}
</style>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- 给切换按钮统一加toggle-btn类,通过data属性配置关联元素 -->
<button class="toggle-btn show" data-pair=".hide" data-target=".helloworld" data-show="true"> + Show </button>
<button class="toggle-btn hide inactive" data-pair=".show" data-target=".helloworld" data-show="false"> - Hide </button>
<p class="helloworld inactive">Hello WOrld</p>
<br>
<button class="toggle-btn ok" data-pair=".cancel" data-target=".thanks" data-show="true"> + Ok </button>
<button class="toggle-btn cancel inactive" data-pair=".ok" data-target=".thanks" data-show="false"> - Cancel </button>
<p class="thanks inactive">Thank you</p>

全局通用JS(只需要写一次)

// 全局事件委托,一次绑定永久复用
$(document).on('click', '.toggle-btn', function() {
  const $btn = $(this)
  $btn.addClass('inactive')
  $($btn.data('pair')).removeClass('inactive')
  $($btn.data('target')).toggleClass('inactive', !$btn.data('show'))
})

效果说明

两种方案都和原有代码的交互逻辑完全一致:

  • 点击当前按钮后自动隐藏自身
  • 显示配对的另一个操作按钮
  • 对应内容块按点击按钮的功能执行显示/隐藏
  • 原有样式完全不需要改动

内容的提问来源于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.29 23:39:14