Як зняти атрибут CSS елемента за допомогою jQuery?


93

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

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

Я хочу мати можливість скасувати це специфічне значення та використовувати каскадне значення, уздовж:

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

Але такий синтаксис, здається, не працює - чи можливо це за допомогою іншого синтаксису?

Редагувати: значення не успадковується від батьківського елемента - вихідні значення надходять від селектора на рівні елемента. Вибачте за будь-яку плутанину!

Відповіді:


141

З документів jQuery :

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


Я зіткнувся з цим питанням, коли у мене була така проблема. У моєму випадку я встановлював атрибут css в styleатрибуті тегу, тому цей метод не працював. Застосування стилю за допомогою .css()методу замість тегу дозволило мені видалити його пізніше.
Glenn Moss

14

Я думаю, ви також можете зробити:

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

Це те, що я давно робив, щоб displayвластивість у простому-старому-javascript відображала / приховувала поле.


4

Насправді, синтаксис, який, на мою думку, був неправильним (з яким null), здається, працює - мій селектор був просто неправильно сформований і, таким чином, не давав жодних елементів. Ой!


21
Станом на jquery 1.4.3 css(..., null)не працює, і його css(..., '')слід використовувати замість цього - bugs.jquery.com/ticket/7233
Тім Сільвестр

3

Спробуйте це:

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

1
Наслідування, на жаль, не є поведінкою, яку я шукаю: "властивість приймає те саме обчислюване значення, що і властивість для батьківського елемента" від w3.org/TR/CSS2/cascade.html
cdleary

Швидше за все "початковий", ніж "успадковувати". "Спадщина" адаптується від батьків, "Initial" робить те, що говорить слово.
Кріс С.

0

Для того, що варто, здається, це не працює в IE 8 для "фільтра", мені довелося використовувати це (у зворотному виклику fadeIn):

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

Очевидно, мені довелося видалити порожнє оголошення вбудованого фільтра, щоб CSS міг набути чинності; існували інші вбудовані правила, тому я не міг просто видалити атрибут style.


-2

Якщо це може допомогти, я додаю проблему з подвійними лапками:

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

поки не працює

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

робіт

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.