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

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

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

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

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

Ответы

Ответ 1

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

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

Изменить. Говоря, я предлагаю вам использовать классы, а не напрямую проверять/устанавливать свойства css. Что-то вроде этого:

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

Css:

tr { background-color: #FFFFFF; }
tr.selected { background-color: #C2DAEF; }

Ответ 2

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

$('#tracker_table tr#master').click( function(){
    if ( $(this).hasClass('something') ) {
        $(this).removeClass('something').addClass('something_else');
    }
})

Ответ 3

если вы используете нативный JavaScript, вы можете попробовать

document.getElementById("#SELECTOR").style.("STYLE_PROPERTY") == VALUE;

или же

Если вы используете jQuery, вы можете попробовать что-то вроде

$("#SELECTOR").css("STYLE_PROPERTY") == VALUE_TO_MATCH