如何基于自定义属性为具有相同类的所有元素分别设置背景颜色

时间:2018-12-17 12:14:09

标签: javascript jquery html css

我有多个类别为.hours的元素,它们都具有带有十六进制值的color属性,例如:<div class="hours" color="#FFFFFF">

如何使用jQuery分别设置所有元素的背景颜色,以使上方的元素具有颜色#FFFFFF,而元素<div class="hours" color="#666666">的背景颜色为#666666? / p>

我的尝试:$('.hours').css('background-color', this.attr.color);

5 个答案:

答案 0 :(得分:1)

尝试

$('.hours').each(function(){
   var t = $(this);   
    t.css('background-color', t.attr('color'));      
  });
})

答案 1 :(得分:1)

纯JS解决方案(在我看来,此jQuery相当无效...):

document.querySelectorAll('.hours').forEach(function(el) {
    el.style.backgroundColor = el.getAttribute('color');
});

答案 2 :(得分:1)

您可以使用.each来引用每个元素及其color属性

$('.hours').each(function() {
  let elem = $(this);
  elem.css('background', elem.attr('color'));
});
.hours {
  border: 1px solid black;
  height: 100px;
  width: 100px;
  display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hours" color="#FFFFFF"></div>
<div class="hours" color="#AAAAAA"></div>
<div class="hours" color="#444444"></div>

答案 3 :(得分:0)

$(".hours").each(function(){
  let $this= $(this); 
  let color=$this.attr("color");
  $this.css("background-color", color);      
});

答案 4 :(得分:0)

并不是您真正要求的,但是没有JS也可以实现,只需使用纯CSS和自定义属性即可:

<div style="--color: green"></div>

div {
  --color: #e2001a; /* default color */
  background-color: var(--color);
  height: 40px;
}

示例:http://jsfiddle.net/e1fwtcdz/1