我很难应用这样的风格!重要的我尝试过:

$("#elem").css("width", "100px !important");

这没有任何作用;不应用任何宽度样式。有没有类似jQuery的方法来应用这样的样式而不必覆盖cssText(这意味着我需要先解析它,等等)?

编辑:我应该补充一下,我有一个带有!我试图用!重要的样式内联,因此使用.width()等不会起作用,因为它会被我的外部重写!重要的风格。

此外,将覆盖上一个值的值是计算出来的,因此我不能简单地创建另一个外部样式。


当前回答

另一种解决此问题的简单方法是添加样式属性:

$('.selector').attr('style', 'width:500px !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');解决了这个问题。

您可以这样做:

$("#elem").css("cssText", "width: 100px !important;");

使用“cssText”作为属性名,并将您希望添加到CSS中的任何内容作为其值。

无需考虑@AramKocharyan的答案的复杂性,也无需动态插入任何样式标签。

只需覆盖样式,但不必解析任何内容,为什么要这样做?

// Accepts the hyphenated versions (i.e. not 'cssFloat')
function addStyle(element, property, value, important) {
    // Remove previously defined property
    if (element.style.setProperty)
        element.style.setProperty(property, '');
    else
        element.style.setAttribute(property, '');

    // Insert the new style with all the old rules
    element.setAttribute('style', element.style.cssText +
        property + ':' + value + ((important) ? ' !important' : '') + ';');
}

无法使用removeProperty(),因为它不会删除!Chrome中的重要规则。无法使用element.style[property]='',因为它只接受Firefox中的camelCase。

您可能会用jQuery缩短这个过程,但这个普通函数将在现代浏览器、InternetExplorer8等上运行。

在阅读了其他答案并进行了实验之后,这对我来说很有用:

$(".selector")[0].style.setProperty( 'style', 'value', 'important' );

不过,这在IE8及以下版本中不起作用。

我认为它工作正常,可以覆盖之前的任何其他CSS(this:DOM元素):

this.setAttribute('style', 'padding:2px !important');