使用特定CSS属性向类添加类

我正在创建一个脚本,它将遍历’body’下的每个元素并检查它的’background-color’。 如果此背景颜色与’#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,它会以hex而不是rgb给我颜色值,所以请不要这样做。 有帮助吗?

更新:

我现在知道这个问题。 我正在使用这个post的那个css钩子。 我刚删除了那个钩子并直接使用了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为你的小提琴。 它帮助了我。

问题是jquery返回rgb(…)即使你声明为HEX所以我只是添加了一个函数来将hex转换为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'); } }); }); 

这是小提琴