スタイルを適用する際に問題が発生しています!important
。以下を試しました:
$("#elem").css("width", "100px !important");
これは何もしません。幅のスタイルはまったく適用されません。上書きせずにこのようなスタイルを適用する jQuery 風の方法はありますかcssText
(つまり、最初に解析する必要があるなど)?
編集: スタイルシートに、スタイル インライン!important
で上書きしようとしているスタイルが含まれていることを付け加えておきます。外部スタイルによって上書きされるため、 などを使用すると機能しません。!important
.width()
!important
また、以前の値を上書きする値は計算されるため、別の外部スタイルを単純に作成することはできません。
ベストアンサー1
この問題は、jQuery が!important
属性を理解できず、ルールを適用できないために発生します。
その問題を回避し、次のようにしてルールを参照してルールを適用できる可能性がありますaddClass()
。
.importantRule { width: 100px !important; }
$('#elem').addClass('importantRule');
または以下を使用しますattr()
:
$('#elem').attr('style', 'width: 100px !important');
ただし、後者のアプローチでは、以前に設定されたインライン スタイル ルールが設定解除されます。したがって、注意して使用してください。
もちろん、@Nick Craver の方法の方が簡単/賢明だという主張も成り立ちます。
上記のattr()
アプローチは、元のstyle
文字列/プロパティを維持するためにわずかに変更され、提案に従って変更されました。ファルココメントで:
$('#elem').attr('style', function(i,s) { return (s || '') + 'width: 100px !important;' });