如何使用jquery查找元素具有特定颜色

时间:2016-07-11 12:25:39

标签: javascript jquery html css colors

这是我的HTML代码

<ul id="components">
    <li>Computer</li>
    <li>Mouse</li>
    <li>Keyboard</li>
    <li>Printer</li>
    <li>CPU</li>
</ul>
#components li:first-child{
    color:red;
}
#components li: nth-child(2){
    color:blue;
}
#components li: nth-child(3){
    color:red;
}
#components li: nth-child(4){
    color:red;
}
#components li: nth-child(5){
    color:green;
}

我需要的是一个jQuery函数,它可以找到li颜色中的所有red元素,并可以将背景转换为黄色

我的意思是

$("#components").find(li elements in red color).css("backgound","yellow"); 
// find li elements in red color and change the background to yellow

4 个答案:

答案 0 :(得分:4)

您可以使用属性选择器[attr=value] DEMO

$('ul li[style="color:red"]').css('background', 'yellow');

您也可以使用纯CSS

执行此操作

&#13;
&#13;
ul#components li[style="color:red"] {
  background: yellow;
}
&#13;
<ul id="components">
  <li style="color:red">Computer</li>
  <li style="color:blue">Mouse</li>
  <li style="color:red">Keyboard</li>
  <li style="color:red">Printer</li>
  <li style="color:green">CPU</li>
</ul>
&#13;
&#13;
&#13;

更新:这不是最好的方法,但你可以检查每个li的颜色,然后返回rbg并添加背景DEMO

$('ul li').each(function() {
  var color = $(this).css('color');
  if (color == 'rgb(255, 0, 0)') $(this).css('background', 'yellow');
})

答案 1 :(得分:4)

您可以使用.filter();

 $('ul li').filter(function() {
   return $(this).css('color') == 'rgb(255, 0, 0)';
 }).each(function() {
   $(this).css('background-color', 'yellow');
 })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<ul id="components">
  <li style="color:red">Computer</li>
  <li style="color:blue">Mouse</li>
  <li style="color:red">Keyboard</li>
  <li style="color:red">Printer</li>
  <li style="color:green">CPU</li>
</ul>

答案 2 :(得分:2)

试试,

$('li[style="color:red"]').css('background-color','yellow')

或者

$('li[style="color:red"]').attr('style','color:red;background-color:yellow;')

或使用each()循环

var allLi=$('li')
$.each(allLi,function(k,v){
if($(v).attr('style')=='color:red')
{
$(v).css('background-color','yellow')
}
})

工作JSFiddle

答案 3 :(得分:2)

您可以使用.filter()过滤元素选择。在filter()的函数中使用style.color属性来获取元素的颜色。

&#13;
&#13;
$("#components > li").filter(function(){
    return this.style.color == "red";
}).css("background-color", "yellow");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="components">
    <li style="color:red">Computer</li>
    <li style="color:blue">Mouse</li>
    <li style="color:red">Keyboard</li>
    <li style="color:red">Printer</li>
    <li style="color:green">CPU</li>
</ul>
&#13;
&#13;
&#13;