2013-07-10 33 views
0

我在我的页面上有这样的内容。用Jquery阅读风格属性

<div class="number_1" style="background-color:red"></div> 
<div class="number_2" style="background-color:yellow"></div> 
<div class="number_3"></div> 
<div class="number_4"></div> 
<div class="number_5" style="background-color:red"></div> 

我不能通过添加background-color类来更改HTML代码!它必须从风格变成红色!

我需要这样的

for(var i=1; i<=5; i++){ 
    if($('.number_'+i).hasBackgroundColor('red')){ 
     //something 
    }else{ 
     //somethign else 
    } 
} 

.attr('style')==='background-color: red'功能不似乎工作

.css('background-color')也不要似乎工作

+1

你是如何使用的CSS()

$('<div style="background-color:red"></div>').attr('style') === 'background-color: red'

$('<div style="background-color:red"></div>').attr('style') === 'background-color:red'

真:步伐将给出不同的结果? –

+0

JQuery具有.css()。看看他们的文档在这里:http://api.jquery.com/css/。他们也有很好的演示。 –

+0

实际上,attr('style')工作,只是IE从其他浏览器返回不同的字符串。 – sinisake

回答

5

在这里,你得到的背景色:

var backgroundColor = $('.number_'+i).css('background-color'); 

它会返回类似“rgb(245,180,5)”。红色是“rgb(255,0,0)”。

如果你喜欢得到十六进制值,例如#FF0000为红色,使用这样的功能:

function hexc(colorval) { 
    var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); 
    delete(parts[0]); 
    for (var i = 1; i <= 3; ++i) { 
     parts[i] = parseInt(parts[i]).toString(16); 
     if (parts[i].length == 1) parts[i] = '0' + parts[i]; 
    } 
    color = '#' + parts.join(''); 
} 
+0

我认为*有些浏览器可能会返回'rgba'而不是'rgb',我认为有些甚至有时会返回十六进制代码。只是FWIW。 –

0

您可以尝试使用.css()方法,该方法返回RGB。

for (var i = 1; i <= 5; i++) {  
    if ($('.number_' + i).css("background-color") == "rgb(255, 0, 0)") { 
    //something  
    } else { 
     //somethign else 
    } 
} 

由于T.J. Crowder提到,上述代码只适用于chrome而不适用于Firefox或IE。

同时尝试使用RGB color parser in JavaScript

+0

@ T.J.Crowder谢谢。我已经添加了一个工作示例。 – Praveen

+0

@ user:这是一个改进。不过,请注意,不同的浏览器以不同的方式返回值(有或没有空格,例如,有时它们会返回'rgba'而不是'rgb',我甚至有时甚至有时会返回十六进制代码)。 –

1

CSS( '背景色')返回颜色的RGB你的情况 “RGB(255,0,0)”。

0

试试这个,

for(var i=1; i<=5; i++){ 
    if($('.number_'+i).css('background-color')=='red'){ // or ==rgb(255,0,0) 
     //something 
    }else{ 
     //somethign else 
    } 
} 
+1

我认为css('background-color')会​​一直返回'rbg(...,...,...)' – Ricola3D

+0

@ Ricola3D:是的,'rgb'或者我认为在某些浏览器上你可能会得到十六进制颜色代码。当然不是''红色''。 –

+0

@ T.J. Crowder只是为了好奇(和未来的作品),哪些版本的浏览器会返回一个hexa代码? – Ricola3D

0
$(document).ready(function() { 
$.each($('div') , function(index) { 
alert($(this).attr('style')); 
}); 
}); 

而且,然后添加您的附加逻辑/条件,循环...

这样的事情...

$(document).ready(function() { 
$.each($('div') , function(index) { 

style=$(this).attr('style'); 

if(style=='background-color: red;' || style=='background-color:red') { 

    alert($(this).attr('class')+' is red!'); 

} 

}); 
}); 
0

.attr('style')==='background-color: red' dont seem to work

One s