Как отключить атрибут CSS элемента с помощью jQuery?
Если я устанавливаю значение CSS для конкретного элемента с помощью:
$('#element').css('background-color', '#ccc');
Я хочу иметь возможность отменить это значение для конкретного элемента и использовать каскадное значение по строкам:
$('#element').css('background-color', null);
но этот синтаксис, похоже, не работает-возможно ли это с помощью другого синтаксиса?
спасибо заранее!
Edit: значение не наследуется от родительского элемента -- исходные значения поступают из селектора уровня элемента. Жалко никакой путаницы!
5 ответов:
С jQuery docs:
установка значения свойства стиля в пустую строку-например
$('#mydiv').css('color', '')
- удаляет это свойство из элемента, если оно уже было непосредственно применено, будь то в атрибуте стиля HTML, через jQuery.css()
метод, или через прямую манипуляцию DOMstyle
собственность. Однако он не удаляет стиль, который был применен с правилом CSS в таблице стилей или<style>
элемент.
Я думаю, что вы также можете сделать:
$('#element').css('background-color', '');
это то, что я делал давным-давно для
display
свойство в обычном старом javascript, чтобы показать / скрыть поле.
на самом деле, синтаксис, который я думал, был неправильным (с
null
) кажется, работает - мой селектор был просто неправильно сформирован, и, таким образом, не дает никаких элементов. О!
для чего это стоит, кажется, не работает в IE 8 для "фильтра", я должен был использовать это (в обратном вызове fadeIn):
$(this).attr('style', $(this).attr('style').replace(/\bfilter:\s*;*/, ''));
очевидно, мне нужно было удалить пустое объявление встроенного фильтра, чтобы CSS мог вступить в силу; были другие встроенные правила, поэтому я не мог просто удалить атрибут стиля.