Как я проверяю на значение CSS с помощью jQuery?

После того, как пользователь нажимает на строку таблицы, я хочу, чтобы она проверила, является ли цвет фона строки таблицы белым, и если так, она изменит цвет на голубой.

Код, который я использую, не работает.Вот:

$("#tracker_table tr#master").click(function(){
  if($(this).css("background-color") == "#FFFFFF") { 
    $(this).css("background-color", "#C2DAEF");
  }
});

Я думаю, что существует что-то не так с моим если оператор. Как я проверяю на значение CSS с помощью jQuery?

13
задан zeckdude 31 May 2010 в 03:24
поделиться

2 ответа

Похоже, он возвращается в форме rgb (x, y, z) , поэтому ваш код должен быть:

$("#tracker_table tr#master").click(function(){
  if($(this).css("background-color") == "rgb(255, 255, 255)") { 
    $(this).css("background-color", "#C2DAEF");
  }
});

Edit : При этом я бы посоветовал вам использовать классы вместо непосредственной проверки / установки свойств css. Примерно так:

$("#tracker_table tr#master").click(function(){
  if(!$(this).hasClass("selected")) { 
    $(this).addClass("selected");
  }
});

Css:

tr { background-color: #FFFFFF; }
tr.selected { background-color: #C2DAEF; }
22
ответ дан 1 December 2019 в 21:37
поделиться

Хотя это может работать, фактически вы храните информацию в виде цветов, а затем извлекаете и сравниваете ее позже. Alconja предлагает подход, который будет работать, но в конечном итоге вам, возможно, будет лучше работать с классами, имена которых вы можете определить сами, чтобы они несли соответствующий смысл. Гораздо удобнее и менее хрупко иметь что-то вроде этого:

$('#tracker_table tr#master').click( function(){
    if ( $(this).hasClass('something') ) {
        $(this).removeClass('something').addClass('something_else');
    }
})
3
ответ дан 1 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: