2013-05-21 3 views
1

Я хочу, чтобы jQuery выбрал background-color из класса css, которого нет в документе (хотя hover использует тот же цвет).Получение данных CSS из файла с помощью jquery

Это код, который я получил на данный момент:

<a id='changetext1'> 
    <div class='tile color_red1'>text</div> 
</a> 
<a id='changetext2'> 
    <div class='tile color_orange1'>text</div> 
</a> 
<div class='rightside color_red2' id='rightside'>some more text</div> 

Rightside начинается как color_red2, но я бы хотел, чтобы изменить color_orange2 на нажатия color_orange1div. И, конечно же, измените его на color_red2, когда нажимают красный div.

текст и цвета приходят из базы данных SQL и помещаются в JQuery с JSON

function rightSideData(data) { 
    $.each(data, function(i, d) { 
     $("#changetext" + d.id).on('click', function() { 
     //Change the background color to match the :hover color of the right div TODO 
     }); 
    } 
}); 

часть с переключением текст работает отлично, я застрял на изменение background-color собственности. Цвет может быть получен из данных JSON (d.color), но я не могу понять, как получить .color_orange2background-color из файла css.

EDIT: Решение заключается в следующем:

var color = window.getComputedStyle($(".color_"+d.color+"1").get(0),':hover').getPropertyValue('background-color'); 
$('.color_red2').css("background-color",color); 
+0

два варианта: либо использовать условие переключения для извлечения значения из объекта JSON, или использовать JQuery для создания '' , то присоедините его к голове. – Ohgodwhy

+0

Насколько я знаю, вы не можете получить доступ к своим CSS напрямую. Взаимодействие jQuery ограничено действием на элементы DOM (например, установка, извлечение, удаление атрибутов класса). –

ответ

1

Чтобы оценить классы divs, вы можете использовать getComputedStyle. Я думаю, что-то вроде

var color = window.getComputedStyle($('.color_red1').get(0),':hover').getPropertyValue('background-color'); 

может возможно работать ...

+0

Это работает довольно хорошо. Я обновил вопрос с ответом в коде. –

+0

Приятно слышать Это был просто слепой выстрел :) .. не пробовал. – rocky

2

Вы можете просто не использовать addClass Jquery в ('color_orange2') и removeClass ('color_red2'), чтобы получить результат, который вы хотите?

Кроме того, вы можете иметь: hover и: active в вашем CSS, поэтому вам даже не нужно использовать JQuery, если изменение предназначено только для просмотра, когда пользователь нажимает. Но если вы хотите постоянного, я предлагаю просто изменить классы вверх.

+0

Исправлено это с этим, однако мой код неаккуратен (поскольку у меня есть 5 разных цветов, что означает 5 раз removeClass(). Любые предложения? –

Смежные вопросы