Почему $(this).css() работает, а $(this).addClass() — нет?
Здравствуйте!
Почему $(this).css({'background':'yellow'}) работает, а $(this).addClass('list') - нет? Вернее добавляет, но не меняет цвет фона background. Класс list: .list {background:yellow}
albertalexandrov, будьте осторожны с important, если в дальнейшем что-то опять не будет цвет фона менять - это скорее всего будет этот самый important, а еще, jQ когда вы пишете css вставляет стили инлайн, поэтому нужно потом очистить атрибуты.
Если добавляет класс, то в jquery все в порядке, проверьте через панель разработчика (F12 or CMD+SHIFT+I), что, скорее всего, есть более приоритетное значение бэкграунда для другого класса этого же элемента, либо он где-то переопределен, либо файл цсс, содержащий это свойство, не подключен. В общем, ищите проблему в стилях
albertalexandrov, мой Вам совет, не привыкайте к подобного рода костылям, как Вам предложили. В дальнейшем подобные решения только ухудшают структуру проекта и усложняют возможность поддержки такого кода, а коллеги, смотря на подобные практики, будут тихонько материться.
В любом случае, проблема была именно в стилях, как я говорил)
Успехов
На вид всё правильно, но не мы не видим всей картины. Предполагаю проблемы с каскадом стилей. Первый вариант имеет самый высокий приоритет, а второй — нет. Кто-то перекрывает жёлтый фон класса list. Смотрите в отладчике.
Как и написали выше, скорее всего дело в приоритетах селекторов в css.
Почитать про это можно, например вот тут, или погуглить другие материалы по этой теме.
Вот быстро написанный пример, что бы примерно понимать, о чём идёт речь.