2013-07-16 30 views
2

以下目前给出了div红色的CSS,我想改变每个div的唯一颜色。使用名称属性为div添加颜色

<div class="foo" name="red">red</div> 
<div class="foo" name="blue">blue</div> 

<script type="text/javascript"> 

$('.foo').each(function() { 
    var color = $('.foo').attr('name'); 
    $(this).css('color',color); 
}); 

</script> 
+1

功能ATTR获得第一个元素的属性。 – maketest

+0

你有js文件吗? – 2013-07-16 18:58:38

回答

4

试试这个:

$('.foo').each(function() { 
    var color = $(this).attr('name'); 
    $(this).css('color',color); 
}); 
+0

这是什么,他已经得到了 – 2013-07-16 18:58:07

+0

这一个改变了第二'” .foo''到副本'this' – Xonal

+0

啊这是不一样的笑 – Huangism

0

我认为选择第一个foo的元素。

你应该尝试并使用选择$(本)

1

我建议如下:

$('.foo').css('color', function() { 
    return this.getAttribute('name'); 
}); 

JS Fiddle demo

传递给css()的匿名函数迭代遍历选择器返回的每个元素,因此this在每种情况下都引用当前迭代的元素。

注意使用getAttribute('name'),这是因为div没有name属性(属性是无效的,一个inputselectbutton,等等元素之外)。

这是我最好建议使用自定义属性data-*存储的颜色,例如案例:

<div class="foo" data-color="red">red</div> 
<div class="foo" data-color="blue">blue</div> 

而且使用jQuery:

$('.foo').css('color', function() { 
    return $(this).data('color'); 
}); 

JS Fiddle demo

参考文献:

+1

我喜欢这个,因为它看起来更干净 – Huangism

+0

清洁,我认为更具可读性。此外,它避免了不必要的和重复使用'each()'和'attr()'方法来做同样的事情。 –

0

我认为这是你想要的... PLZ清理代码的..

<div class="foo" name="blue">Hola</div> 

<div class="foo" name="red">Hello</div> 

<script type="text/javascript"> 

$("div").each(function() { 
var color = $('.foo').attr('name'); 
document.write("color got is: "+color); 
color=$(this).attr('name'); 
$(this).css('background-color',color); 

document.write(" now color is: "+color)