我想用一定颜色选择页面上的所有元素,让我们说红色。
我知道我可以这样做:$("div[style=color:rgb(255,0,0)]")
。但是,我的问题是红色有不同的表示,例如#FF0000
而只是red
。但rgb(255, 0, 0)
中的任何数量的空格仍然定义为红色。
我需要以适用于任何颜色的一般方式进行,并接受该颜色的任何表示。有没有办法定义这样一个“智能”的CSS选择器?
答案 0 :(得分:0)
我不确定我是否理解这个问题。您只想在颜色为“红色”时进行过滤。 (字面意思是,#FF00000)?或者也可以是例如“黑暗的”'将包含在您的过滤器中?
在第一种情况下,我并没有真正看到问题,kukkuz的解决方案可能会有一些改进。
据我所知,你不能用CSS选择器
答案 1 :(得分:0)
通过使用这种类型的选择器,您可以告诉jquery搜索包含您要查找的单词的字符串/子字符串。 但选择是无止境的。
因为你正在搜索一个字符串,你必须考虑所有可能性,包括空格,不同的字符大小,更多的样式属性,然后颜色可以包含数字,如0或255或ff或00等......
目前支持的选择器无法做到这一点......
但是如果你使用jquery获取所有元素,然后检查它们的颜色/背景颜色,你将得到一个真正的颜色表示。
如何编写样式并不重要,浏览器将返回一种颜色(可以是十六进制或rgb,具体取决于浏览器)。
我认为这个behivor来自w3c规则......
非正统的诽谤看起来像这样:
$('div').each(function(){
if($(this).css('color') == "rgb(255, 0, 0)" || $(this).css('color') == "#FF0000"){
$(this).css("color","green");
}
if($(this).css('background-color') == "rgb(255, 0, 0)" || $(this).css('background-color') == "rgba(255, 0, 0, 0)"){
$(this).css("background-color","green");
}});
小提琴:https://jsfiddle.net/zdu1adr7/4/
这个适用于chrome,firefox,edge,即11/10/9。