2013-01-06 33 views
1

我知道这是一个老问题,类似的问题(解决)更加复杂。但我已经尝试过,并且无法自己弄清楚。通过css/javascript更改指定的样式?

<div style="color:white; padding:10px">Text</div> 

我想它的颜色变为红色:

div[style*="color:white"]{color:red} 

$('div').filter(function() { 
    return $(this).css('color') == 'white'; 
}).css("color", "red"); 

我都尝试CSS和JavaScript,带或不带空格,用十六进制或RGB颜色代码。

+0

我认为你的return语句只是返回true而不是元素。无论如何,你得到什么类型的错误? –

+0

你有没有试过'console.log'或'alert'?你会立刻看到发生了什么......'console.log($(this).css('color'))' – elclanrs

回答

3

的问题是,它不返回你期待什么。它实际上返回一个RGB字符串rgb(255, 255, 255),而不是'白色'。改变这一点,你是金。

Example JSFiddle

0

你正在做一些非常时髦的事情,不应该像这样使用过滤器函数。要选择一个DOM元素,改变它的CSS与jQuery做这个$('div').css({'color': 'red'});

这里的工作example

为了正确介绍jQuery的我由amazing Chris Coyer

0

内联CSS推荐这个视频接管任何内部或外部样式表。如果您有能力删除该特定元素上的内联CSS,并将其替换为<div class="myElememt"></div>之类的内容,那将是理想选择。至于使用jQuery我得到了它通过使用CSS方法,无需过滤器来改变:

$('div').css('color', 'blue'); 
2

其实$(this).css('color')回报rgb(255, 255, 255)所以你可以使用(),下一句是写的CSS的

$('div').filter(function() { 
    return $(this).css('color') == 'rgb(255, 255, 255)'; 
}).css("color", "red"); 

Example.

+0

非常感谢! (但我会将Apropos的答案标记为我的T-up,因为他快了10秒^ _ ^) – Cindy

+0

@Cindy,够了:-) –

1

jQuery的API文档。 “

”不同的浏览器可能会返回逻辑上但文本上不相等的CSS颜色值,例如#FFF,#ffffff和rgb(255,255,255)。“

所以,我认为简单的return $(this).css('color') == 'rgb(255, 255, 255)';也可能在未来有一些问题。

在这里,我建议使用CSS类来实现它,如下所示:

.white{color:white;} 
.red{color:red;} 

$('div').filter(function() { 
    return $(this).hasClass('white'); 
}).removeClass('white').addClass('red'); 

为什么div[style*="color:white"]{color:red}不起作用,这是因为内联CSS具有最高优先级出的三种方式。

+0

非常感谢。幸运的是,我只想为我做点事情。我无法更改HTML。 – Cindy