Как отключить атрибут CSS элемента с помощью jQuery?


Если я устанавливаю значение CSS для конкретного элемента с помощью:

$('#element').css('background-color', '#ccc');

Я хочу иметь возможность отменить это значение для конкретного элемента и использовать каскадное значение по строкам:

$('#element').css('background-color', null);

но этот синтаксис, похоже, не работает-возможно ли это с помощью другого синтаксиса?

спасибо заранее!

Edit: значение не наследуется от родительского элемента -- исходные значения поступают из селектора уровня элемента. Жалко никакой путаницы!

5 77

5 ответов:

С jQuery docs:

установка значения свойства стиля в пустую строку-например $('#mydiv').css('color', '') - удаляет это свойство из элемента, если оно уже было непосредственно применено, будь то в атрибуте стиля HTML, через jQuery .css() метод, или через прямую манипуляцию DOM style собственность. Однако он не удаляет стиль, который был применен с правилом CSS в таблице стилей или <style> элемент.

Я думаю, что вы также можете сделать:

$('#element').css('background-color', '');

это то, что я делал давным-давно для display свойство в обычном старом javascript, чтобы показать / скрыть поле.

на самом деле, синтаксис, который я думал, был неправильным (с null) кажется, работает - мой селектор был просто неправильно сформирован, и, таким образом, не дает никаких элементов. О!

попробуйте это:

$('#element').css('background-color', 'inherit');

для чего это стоит, кажется, не работает в IE 8 для "фильтра", я должен был использовать это (в обратном вызове fadeIn):

$(this).attr('style', $(this).attr('style').replace(/\bfilter:\s*;*/, ''));

очевидно, мне нужно было удалить пустое объявление встроенного фильтра, чтобы CSS мог вступить в силу; были другие встроенные правила, поэтому я не мог просто удалить атрибут стиля.