为具有特定CSS属性的元素添加Class
Add Class To Elements With Specific CSS Property
我正在创建一个脚本,将迭代'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(如header或footer等)上迭代,则此函数可以完美地工作。但是当我遍历整个DOM时,这个函数根本不起作用。请注意,我使用的是csshook,它会给我十六进制的颜色值,而不是rgb,所以请不要这样做。任何帮助吗?
更新:
我现在知道问题了。这是在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的小提琴。
问题是,jquery返回rgb(…),即使你声明为十六进制,所以我只是添加了一个函数来翻译十六进制到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');
}
});
});
这里是提琴
相关文章:
- 如何将html元素添加到tampermonkey中
- 如何将html元素添加为生成的内容
- 如何向Selectize元素添加渲染和创建方法
- 向html选择元素添加选项
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何将新的键/值对元素添加到现有数组
- 使用docment.createElement向元素添加选项
- ng重复向一个元素添加条件类
- 为li元素添加标题
- 向ckeditor中的多个元素添加内联样式
- Javascript 向影子根中的自定义元素添加函数
- 将伪元素添加到<文本区域>
- 如果类只包含一个特定数字,则向元素添加类
- DOM:将空元素添加到 DOM 和页面重排
- 是否有 jQuery 事件用于何时将元素添加到文档中
- 通过 ajax 使用自定义滚动条向元素添加内容
- 是否可以用D3将svg元素添加到开放层映射中
- 如何将元素添加到动态数组并排除现有元素
- 在AngularJS中将元素添加到作用域时,如何在所有设备上播放声音
- 将图像元素添加到<a>标签