我正在创建一个脚本,它将遍历'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,它会以十六进制而不是rgb给我颜色值,所以请不要这样做。有什么帮助吗?
更新
我现在知道这个问题。它来自this 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的小提琴。它帮助了我。
答案 0 :(得分:0)
问题是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');
}
});
});
以下是Fiddle