2013-07-16 2 views
2

Ниже приведено оба divs red css, я хотел бы изменить цвет уникально для каждого div.Добавить цвет в div, используя атрибут name

<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

Функция атр получает атрибут первого элемента. – maketest

+0

У вас есть файл js? –

ответ

4

Попробуйте это:

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

Это копия того, что у него есть –

+0

Это изменяет второй '' .foo'' на 'this' – Xonal

+0

да это не то же самое lol – Huangism

0

Я думаю, что он выбирает первый элемент Foo.

вы должны попробовать и использовать селектор $ (это)

1

Я хотел бы предложить следующее:

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

JS Fiddle demo.

Анонимная функция, переданная в css(), выполняет итерацию по каждому из элементов, возвращаемых селектором, поэтому this в каждом случае относится к текущему итерационному элементу.

Обратите внимание на использование getAttribute('name'), это происходит потому, что div не имеет name свойство (атрибут не является действительным, вне input, select, button и т.д ... элементов).

В таком случае я бы также предлагают использовать пользовательские 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

Чище и, я думаю, более читабельным. Плюс он избегает ненужных и * repeat *, используя методы '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) 
Смежные вопросы