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

jQuery点击切换内容时如何为点击后的按钮添加高亮保持效果

实现方案

你已经提前写好了.active类的高亮样式,只需要统一管理按钮的类名切换即可,以下是精简后的可扩展实现方案:

优化后代码

1. 直接可用版本(无需修改现有HTML和CSS,替换原有JS即可生效)

$(document).ready(function() {
  // 提前缓存DOM元素,避免重复查询提升性能
  const $allBtns = $('.frequency button');
  const $allContent = $('.content1, .content2');

  // 初始化状态:默认显示content2,对应给button2加高亮
  $('#button2').addClass('active');

  // 统一绑定所有按钮的点击事件,无需单独给每个按钮写监听
  $allBtns.click(function() {
    // 第一步:清空所有按钮的高亮,隐藏所有内容
    $allBtns.removeClass('active');
    $allContent.hide();

    // 第二步:给当前点击的按钮加高亮
    $(this).addClass('active');

    // 第三步:显示对应内容
    $(this).is('#button1') ? $('.content1').show() : $('.content2').show();
  });
});

2. 可选扩展版本(后续新增按钮无需修改JS)

如果后续可能增加更多按钮和对应内容,可以通过data-target属性绑定按钮和对应内容,可扩展性更强:

修改后的HTML(仅调整按钮部分)

<div class="frequency">
  <button data-target=".content1">button1text</button>
  <button data-target=".content2">button2text</button>
  <!-- 后续加第三个按钮只需要新增对应行,同步加content3的DOM即可,不用改JS -->
  <!-- <button data-target=".content3">button3text</button> -->
</div>
<!-- 其余HTML代码保持不变 -->

对应JS代码

$(document).ready(function() {
  const $allBtns = $('.frequency button');
  // 建议给所有内容块加统一类名content-item,后续新增内容不用修改这行选择器
  const $allContent = $('.content1, .content2');

  // 初始化默认高亮,eq(1)对应第二个按钮,要默认第一个高亮改成eq(0)即可
  $allBtns.eq(1).addClass('active');

  $allBtns.click(function() {
    const targetContent = $(this).data('target');
    $allBtns.removeClass('active');
    $(this).addClass('active');
    $allContent.hide();
    $(targetContent).show();
  });
});

方案优势

  • 无重复逻辑,代码结构清晰易维护
  • 提前缓存DOM选择器,减少重复DOM查询,性能更优
  • 扩展版本适配后续需求变化,新增按钮无需修改JS逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:15:01