jQueryを使用して要素のCSS属性を設定解除するにはどうすればよいですか?


93

特定の要素にCSS値を設定した場合:

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

その要素固有の値を設定解除し、カスケードされた値を使用できるようにしたい:

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

しかし、その構文は機能していないようです–これは別の構文を使用して可能ですか?

編集:値は親要素から継承されません。元の値は要素レベルのセレクターから取得されます。混乱してすみません!

回答:


140

jQuery docsから:

スタイルプロパティの値を空の文字列に設定します。たとえば$('#mydiv').css('color', '')、HTMLスタイル属性、jQueryの.css()メソッド、またはstyleプロパティの直接DOM操作のいずれかで既に直接適用されている場合、そのプロパティは要素から削除されます。ただし、スタイルシートまたは<style>要素のCSSルールで適用されたスタイルは削除されません。


私はこの問題があったときにこの質問に出くわしました。私の場合style、タグの属性にcss属性を設定していたため、このメソッドは機能しませんでした。.css()タグではなくメソッドを使用してスタイルを適用すると、後でスタイルを削除できます。
Glenn Moss

14

私もできると思います:

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

これは、私が昔display、plain-old-javascriptのプロパティでフィールドを表示/非表示にするために使用していたことです。


4

実際、私が間違っていると思った構文(を使用null)は機能しているようです-私のセレクターは不適切に形成されていたため、要素を生成していません。ああ!


21
jquery 1.4.3以降css(..., null)は機能せず、css(..., '')代わりに使用する必要があります-bugs.jquery.com/ticket/7233
Tim Sylvester

3

これを試して:

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

1
残念ながら、継承は私が探している動作ではありません。「プロパティは、要素の親のプロパティと同じ計算値を取ります」からw3.org/TR/CSS2/cascade.html
cdleary

「継承」よりも「初期」の可能性が高いです。「継承」は親から適応し、「初期」は単語が言うことを行います。
Chris S.

0

これがIE 8の 'filter'で機能しないように見えるので、これを(fadeInコールバックで)使用する必要がありました。

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

明らかに、CSSを有効にするには、空のインラインフィルター宣言を削除する必要がありました。他のインラインルールがあったので、style属性だけを削除することはできませんでした。


-1

それが役立つ場合は、二重引用符の問題を追加します。

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

動作しません

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

働く

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.