Как отключить атрибут CSS элемента с помощью jQuery?
Если я устанавливаю значение CSS для определенного элемента, используя:
$('#element').css('background-color', '#ccc');
Я хочу, чтобы убрать это значение для элемента и использовать каскадное значение по строкам:
$('#element').css('background-color', null);
Но этот синтаксис не работает - возможно ли это с помощью другого синтаксиса?
Спасибо заранее!
Изменить: Значение не наследуется от родительского элемента - исходные значения поступают из селектора уровня элемента. Извините за любую путаницу!
Ответы
Ответ 1
В jQuery docs:
Установка значения свойства style в пустую строку - например. $('#mydiv').css('color', '')
- удаляет это свойство из элемента, если оно уже было применено непосредственно, как в атрибуте стиля HTML, через метод jQuery .css()
, так и при непосредственном манипулировании DOM свойства style
. Однако он не удаляет стиль, примененный с помощью правила CSS в элементе таблицы стилей или <style>
.
Ответ 2
Думаю, вы также можете:
$('#element').css('background-color', '');
То, что я делал давно для свойства display
в plain-old-javascript, чтобы показать/скрыть поле.
Ответ 3
На самом деле синтаксис, который я считал неправильным (с null
), кажется, работает: мой селектор был просто неправильно сформирован и, таким образом, не дал никаких элементов. D'о!
Ответ 4
Попробуйте следующее:
$('#element').css('background-color', 'inherit');
Ответ 5
Для того, что стоит, похоже, не работает в IE 8 для "фильтра", мне пришлось использовать это (в обратном вызове fadeIn):
$(this).attr('style', $(this).attr('style').replace(/\bfilter:\s*;*/, ''));
Очевидно, мне нужно было удалить пустое объявление встроенного фильтра, чтобы CSS мог вступить в силу; были другие встроенные правила, поэтому я не мог просто удалить атрибут стиля.