Wie man! Wichtig in jquery einbezieht

72

Ich versuche,! CSS-Attribut mit jQuery like hinzuzufügen

$("tabs").css('height','650px;!important');

aber! wichtig hat keine Wirkung. Wie kann man! Wichtig in jquery aufnehmen?

Sanft
quelle
1
Können Sie es ohne das Semikolon zwischen dem Wert und! Wichtig versuchen?
Pekka
2
Die Antwort von Marc W ist die Antwort. Du brauchst nicht! Wichtig.
Zack The Human
Obwohl Marc Ws Antwort technisch die richtige Antwort ist, funktioniert Klokops Antwort
Soft

Antworten:

160

Anscheinend ist dies in jQuery möglich:

$("#tabs").css("cssText", "height: 650px !important;");

Src: http://bugs.jquery.com/ticket/2066

klokop
quelle
5
Obwohl Sie $ (elem) .css ('cssText', $ (elem) .css ('cssText') + "Ihr neues CSS") richtig machen können? ;)
Juan
3
Was ist cssText hier?
Diffy
@Diffy, cssText ist die Eigenschaft 'cssText' der Eigenschaft 'style'. (dh element.style.cssText)
klokop
Ich musste sowohl Höhe als auch Breite mit dieser Methode einstellen, man muss es als Einzeiler schreiben. Beispiel$('img').css('cssText', "max-width: " +ui.value + 'px !important;' + "max-height: "+ui.value + 'px !important;');
Vincent Tang
2
@ Juan Obwohl es Ihnen auch nicht Inline-Stile bringen wird. Sie erhalten eine Zeitung mit CSS.
Shadi Namrouti
6

Ich habe dieses Problem gelöst mit:

inputObj.css('cssText', inputObj.attr('style')+'padding-left: ' + (width + 5) + 'px !IMPORTANT;');

Es geht also kein Inline-Style verloren, der letzte überschreibt den ersten

Brenner
quelle
6

Es ist auch möglich, wichtigere Eigenschaften hinzuzufügen:

inputObj.attr('style', 'color:black !important; background-color:#428bca !important;');

user3711819
quelle
4
var tabsHeight = 650;

$("tabs").attr('style', 'height: '+ tabsHeight +'px !important');

ODER

#CSS
.myclass{height:650px !important;}

dann

$("tabs").addClass("myclass");
Murat Kezli
quelle
2

Wenn Sie jquery verwenden müssen! Wichtig für mehr als einen Artikel, würden Sie dies so tun.

Setzen Sie beispielsweise die imgTags max-width und max-height auf jeweils 500px

$('img').css('cssText', "max-width: 500px !important;' + "max-height: 500px !important;');
Vincent Tang
quelle
2

Für die Zeiten, in denen Sie jquery verwenden müssen, um! Wichtige Eigenschaften festzulegen, ist hier ein Plugin, das ich erstelle und das Ihnen dies ermöglicht.

$.fn.important = function(key, value) {
    var q = Object.assign({}, this.style)
    q[key] = `${value} !important`;
    $(this).css("cssText", Object.entries(q).filter(x => x[1]).map(([k, v]) => (`${k}: ${v}`)).join(';'));
};

$('div').important('color', 'red');
Bernesto
quelle
0

Wenn Sie wirklich CSS überschreiben müssen, das! Wichtige Regeln enthält, zum Beispiel in einem Fall, auf den ich kürzlich gestoßen bin, ist das Überschreiben eines WordPress-Themas erforderlich! Wichtige SCSS-Regeln, um das Thema zu brechen, aber da ich meinen Code mit Webpack und transpiliert habe (Ich nehme an, dies ist der Grund -) Mein CSS kam nach dem transpilierten Javascript in die Kette. Sie können Ihrem Stylesheet eine separate Klassenregel hinzufügen, die die erste! Wichtige Regel in der Kaskade überschreibt, und die schwergewichtete Klasse eher umschalten als CSS dynamisch anpassen. Nur ein Gedanke.

Will Meier
quelle
-2

Sie müssen !importantCSS nicht mit jQuery ändern, da es das styleAttribut für die Elemente im DOM direkt ändert . !importantwird nur in Stylesheets benötigt, um zu verhindern, dass eine bestimmte Stilregel auf einer niedrigeren Ebene überschrieben wird. Ändern styledirekt ist die unterste Ebene Sie gehen können, so !importanthat keine Bedeutung.

Marc W.
quelle
54
Es sei denn, Sie möchten eine bestehende! Wichtige Regel überschreiben ...
Quentin
2
Ja, wenn !importantdas Stylesheet ein Element enthält, das Sie überschreiben möchten, benötigen Sie es in $().css().
Paul D. Waite
Wie die anderen Kommentare impliziert haben, ist dies einfach falsch. Während das styleAttribut alle CSS überschreibt, ohne die angewendet wird !important, wirkt es sich nicht auf CSS aus, mit dem angewendet wird !important.
Makyen
1
Dies ist nicht nur falsch, sondern OP fragte WIE nicht, ob er es brauchte
nickt am