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

如何用jQuery获取点击的Bootstrap按钮原始背景色而非:hover状态色?

解决Bootstrap按钮点击时获取原始背景色的问题

这个问题我之前也遇到过!原因是当你点击按钮的时候,它正处于:active或者:hover的伪类状态中,Bootstrap给这些状态定义了不同的背景色,而$(this).css('background-color')只会返回当前元素实际应用的样式——也就是伪类生效后的颜色。下面给你几个可行的解决方案:

方案1:提前缓存原始背景色(通用所有Bootstrap版本)

页面加载完成后,按钮还没被hover或点击,这时候获取的就是原始背景色,我们可以把它存在元素的data属性里,点击时直接取这个缓存值:

// 页面加载时缓存每个.btn-primary的原始背景色
$(document).ready(function() {
  $('.btn-primary').each(function() {
    $(this).data('original-bg', $(this).css('background-color'));
  });

  // 点击按钮时获取缓存的原始颜色
  $('.btn-primary').click(function() {
    const originalBackgroundColor = $(this).data('original-bg');
    console.log('原始背景色:', originalBackgroundColor);
    // 这里可以做你需要的操作
  });
});

方案2:直接获取Bootstrap CSS变量(Bootstrap 5+适用)

Bootstrap 5开始大量使用CSS变量,.btn-primary的原始背景色对应的变量是--bs-btn-bg,我们可以通过getComputedStyle直接读取这个变量的值,不需要提前缓存:

$('.btn-primary').click(function() {
  const computedStyles = getComputedStyle(this);
  const originalColor = computedStyles.getPropertyValue('--bs-btn-bg').trim();
  console.log('原始背景色:', originalColor);
});

这个方法更简洁,而且如果后续通过CSS修改了按钮的原始颜色,也能自动拿到最新值。

方案3:从样式表中查找原始规则(旧版Bootstrap适用)

如果用的是Bootstrap 4及更早版本,没有CSS变量,可以遍历页面的样式表,找到.btn-primary对应的原始背景色规则:

// 定义函数查找指定选择器的原始背景色
function getOriginalBgFromStylesheet(selector) {
  for (const sheet of document.styleSheets) {
    try {
      for (const rule of sheet.cssRules) {
        // 匹配目标选择器(注意可能有多个规则,优先精确匹配)
        if (rule.selectorText === selector && rule.style.backgroundColor) {
          return rule.style.backgroundColor;
        }
      }
    } catch (e) {
      // 跨域的样式表会抛出权限错误,直接跳过
      continue;
    }
  }
  return null;
}

// 点击时调用函数获取颜色
$('.btn-primary').click(function() {
  const originalColor = getOriginalBgFromStylesheet('.btn-primary');
  console.log('原始背景色:', originalColor);
});

这个方法需要注意跨域样式表的问题,所以加了try-catch来避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:35:45