2015-04-28 3 views
0

У меня есть элемент управления ретрансляторами в моем веб-приложении, состоящем из выпадающего списка, я манипулирую с этим выпадающим поведением (добавив некоторые пользовательские стили) на событие change. Проблема в том, что когда я использую свойство jquery css для получения значения фона фона, оно возвращает мне значение, которое было установлено ранее, но не обновленное значение. Но странно, когда я использую свойство attr, чтобы получить атрибут стиля, он дает мне правильный результат, но, очевидно, я не могу использовать его, потому что мне нужен конкретный стиль.Свойство jQuery css не получает правильное значение

Вот мой оказал выпадающий: -

<select name="ct100$rptCurrentData$ct101$ddlIncludeData" class="clsTypes" 
    id="ctl00_rptCurrentDatas_ddlIncludeData_0" style="background-color: transparent;"> 
    <option style="background-color: transparent;" value="-1">Select</option> 
    <option style="background-color: transparent;" value="1">Activity</option> 
    <option style="background-color: rgb(231, 251, 189);" value="2">Proposal</option> 
    <option style="background-color: transparent;" value="3">Both</option> 
</select> 

Я перезаписывать цвет фона выбранного выпадающего меню с помощью: -

$(this).find('option:selected').css("backgroundColor", '#E7FBBD');` 

И как мы можем видеть в оказанной HTML, это обновление штрафа. Но моя проблема заключается в том, чтобы получить то же самое, я получаю правильное значение с .attr("style"), но не с .css Почему?

$(this).find('option:selected').css('background-color')); //Output-rgb(10, 36, 106) 
$(this).find('option:selected').css('backgroundColor')); //Output-rgb(10, 36, 106) 
$(this).find('option:selected').attr("style")); 
//Output- background-color: rgb(231, 251, 189); 
+0

Связано это с [это] (http://stackoverflow.com/questions/3485365/how-can-i-force-webkit-to-redraw-repaint-to-propagate-style- изменения/3485654 # 3485654) – BNN

+0

@nadeem - Nope! –

ответ

0

Вы получаете правильное значение в обоих случаях. Проблема заключается в том, что «background-color» всегда дает значение «rgb» используемого цвета. Проверьте ссылку ниже.

https://jsfiddle.net/cq3ow57h/3/

$('select').find('option[value="3"]').css("background-color", 'red'); 

$('select').on('change',function(){ 
alert($(this).find('option:selected').css('backgroundColor'));//Output-rgb(10, 36, 106)); 
// $(this).find('option:selected').css('backgroundColor')); //Output-rgb(10, 36, 106); 

alert($(this).find('option:selected').attr("style")); 

}); 

Если вы хотите шестнадцатеричное значение кода вместо RGB, то вы должны преобразовать его. How to get hex color value rather than RGB value?

+0

Нет, это не тот случай. Речь идет не о 'rgb', я в порядке. Я четко объяснил свою проблему, он извлекает неправильный 'rgb', когда я использую css. –

+1

Проверьте эту ссылку. https://jsfiddle.net/cq3ow57h/3/. Он четко показывает обновленное значение. –

+0

Да, я согласен, но это не работает для меня, и я просто не могу полагаться на скрипку. Это может быть проблема с IE 11, который знает, cz код в порядке. –

0

У меня могло бы быть решение для этого. Если вы каким-то образом измените цвет, то изменение .css() не изменится, пока анимация не будет завершена. и .attr() дает вам измененный цвет вправо. см. разницу без анимации

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