javascript - 向具有特定 CSS 属性的元素添加类

标签 javascript jquery

我正在创建一个脚本,它将迭代“body”下的每个元素并检查其“背景颜色”。如果此背景颜色与“#eb2c33”匹配,则脚本将向该元素添加一个类,否则它将移动到下一个元素。 我使用它是为了避免进入 html 并手动将该类放入元素中。 这是我的代码。

$(document).ready(function (e) {
        
  $('body *').each(function(index) {
    
         var rgbg = $(this).css('background-color');
         if(rgbg == "#eb2c33")
         {
                $(this).addClass('jcbg');
             
              }

      });
});

现在,如果我迭代特定的 div(如页眉或页脚等),此函数可以完美运行。但是当我迭代整个 DOM 时,此函数根本不起作用。 请注意,我使用的是 csshook,它会以十六进制而不是 RGB 形式提供颜色值,所以请不要这样做。有什么帮助吗?

更新:

我现在知道问题所在了。它位于 this post 的 css 钩子(Hook)中我正在使用的。我刚刚删除了那个钩子(Hook)并直接使用了 RGB 值,它开始完美工作。这是我更新的代码

$(document).ready(function (e) {
        

     $('body *').each(function(index) {
    
         var rgbg = $(this).css('background-color');
         if(rgbg == "rgb(235, 44, 51)")
         {
                $(this).addClass('jcbg');
             
             }

    });

});

感谢@Guffa 的 fiddle 。它帮助了我。

最佳答案

问题是jquery返回rgb(...),即使你声明为十六进制,所以我只是添加了一个函数将十六进制转换为rgb:

function hex2rgb(hex) {
  return ['0x' + hex[1] + hex[2] | 0, '0x' + hex[3] + hex[4] | 0, '0x' + hex[5] + hex[6] | 0];
}

不仅仅是调整您的代码:

$(document).ready(function (e) {

    // Color to change
    var targetHex = hex2rgb('#eb2c33');

    $('body *').each(function(index) {         
        var rgbg = $(this).css('background-color');

        if(rgbg == 'rgb('+targetHex[0]+', '+targetHex[1]+', '+targetHex[2]+')'){
            $(this).addClass('jcbg');
        }

    });
});

这是Fiddle

关于javascript - 向具有特定 CSS 属性的元素添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24262619/

相关文章:

javascript - 按添加按钮后我的行多次添加

javascript - 在 jquery 中添加类工作正常,但删除类不起作用

javascript - 主干 View 继承

javascript - 悬停时如何使此功能无限

javascript - 无法对使用 js 创建的表应用 css

javascript - 无法让 jQuery Cycle 在 Amazon Webstore 中运行

javascript - 向同一个按钮添加两个点击事件只能起作用一次

javascript - jsonp 和 POST 操作

javascript - Html5 Canvas Javascript 库?

javascript - 嵌入可自动下载的 pdf