我很难应用这样的风格!重要的我尝试过:
$("#elem").css("width", "100px !important");
这没有任何作用;不应用任何宽度样式。有没有类似jQuery的方法来应用这样的样式而不必覆盖cssText(这意味着我需要先解析它,等等)?
编辑:我应该补充一下,我有一个带有!我试图用!重要的样式内联,因此使用.width()等不会起作用,因为它会被我的外部重写!重要的风格。
此外,将覆盖上一个值的值是计算出来的,因此我不能简单地创建另一个外部样式。
我很难应用这样的风格!重要的我尝试过:
$("#elem").css("width", "100px !important");
这没有任何作用;不应用任何宽度样式。有没有类似jQuery的方法来应用这样的样式而不必覆盖cssText(这意味着我需要先解析它,等等)?
编辑:我应该补充一下,我有一个带有!我试图用!重要的样式内联,因此使用.width()等不会起作用,因为它会被我的外部重写!重要的风格。
此外,将覆盖上一个值的值是计算出来的,因此我不能简单地创建另一个外部样式。
当前回答
对于这个问题,我认为最简单、最好的解决方案是使用addClass()而不是.css()或.attr()。
例如:
$('#elem').addClass('importantClass');
在CSS文件中:
.importantClass {
width: 100px !important;
}
其他回答
我认为它工作正常,可以覆盖之前的任何其他CSS(this:DOM元素):
this.setAttribute('style', 'padding:2px !important');
仅供参考,它不起作用,因为jQuery不支持它。2012年提交了一张罚单(#11173$(elem).css(“property”,“value!important”)失败),最终被关闭为WONTFIX。
它可能适合也可能不适合您的情况,但您可以在许多此类情况下使用CSS选择器。
例如,如果您希望.cssText的第3个和第6个实例具有不同的宽度,可以编写:
.cssText:nth-of-type(3), .cssText:nth-of-type(6) {width:100px !important;}
Or:
.container:nth-of-type(3).cssText, .container:nth-of-type(6).cssText {width:100px !important;}
const elem = $("#elem");
elem[0].style.removeAttribute('width');
elem[0].style.setProperty('width', '100px', 'important');
注:使用Chrome可能会返回错误,例如:
elem[0].style.removeAttribute不是函数
更改行以使用.removeProperty函数,如elem[0].style.removeProperty('width');解决了这个问题。
可以直接使用.width()设置宽度,如下所示:
$("#elem").width(100);
更新征求意见:您也有这个选项,但它将替换元素上的所有css,因此不确定它是否更可行:
$('#elem').css('cssText', 'width: 100px !important');