如何在jQuery中包含!important


73

我正在尝试使用jQuery在CSS属性中添加!important

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

但是!important无效。如何在jQuery中包含!important?


1
您可以尝试在值和!important之间不要使用分号吗?
Pekka

2
马克·W的答案就是答案。您不需要!重要。
Zack The Human

虽然马克·W公司的答案是技术上正确的答案,klokop的答案作品

Answers:


162

显然,可以在jQuery中执行此操作:

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

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


5
虽然,您可以执行$(elem).css('cssText',$(elem).css('cssText')+“您的新CSS”)对吗?;)
Juan

3
什么是cssText?
2014年

@ Diffy,cssText是'style'属性的'cssText'属性。(即element.style.cssText)
klokop

我必须使用此方法设置高度和宽度,您必须将其编写为一个衬板。范例$('img').css('cssText', "max-width: " +ui.value + 'px !important;' + "max-height: "+ui.value + 'px !important;');
Vincent Tang

2
@Juan虽然也会带给您非内联样式。您将获得一份CSS报纸。
Shadi Namrouti

6

我用以下方法解决了这个问题:

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

这样就不会丢失inline-Style,后一个会覆盖第一个


6

也可以添加更重要的属性:

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


4
var tabsHeight = 650;

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

要么

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

然后

$("tabs").addClass("myclass");

2

如果您需要让jquery对多个项目使用!important,这就是您的方法。

例如,将img标签的最大宽度和最大高度分别设置为500px

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

2

在那些需要使用jquery设置!important属性的情况下,这是我构建的插件,您可以使用它来进行设置。

$.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');

0

例如,如果您确实需要重写其中具有!important规则的css,则在最近遇到的情况下,需要重写wordpress主题才能使用!important scss规则来破坏该主题,但是由于我正在使用webpack和(我想这是为什么-)我的CSS在转译的javascript之后出现在链中,您可以在样式表中添加一个单独的类规则,该类规则将覆盖级联中的第一个!important规则,并切换权重较大的类,而不是而不是动态调整CSS。只是一个想法。


-2

!important使用jQuery修改CSS时不需要,因为它直接修改styleDOM中元素的属性。!important仅在样式表中需要,以禁止在较低级别覆盖特定样式规则。style直接修改您可以达到的最低级别,因此!important没有任何意义。


54
除非您想覆盖现有的!重要规则…
Quentin

2
是的:如果!important您要覆盖的样式表中有一个,则需要在中添加$().css()
Paul D. Waite,2009年

正如其他评论所暗示的那样,这是错误的。尽管该style属性会覆盖所有未使用CSS的属性!important,但不会影响使用的CSS !important
Makyen

1
这不仅是不正确的,而且OP询问他是否需要
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.