我正在创建一个脚本,它将迭代“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/