如何使用.css()应用!important?

我在应用!important样式时遇到麻烦。 我试过了: css

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

什么都不作 ; 不会应用任何宽度样式。 有没有一种相似jQuery的方式来应用这种样式,而没必要覆盖cssText (这意味着我首先须要解析它,等等)? 正则表达式

编辑 :我应该补充一点,我有一个样式表,具备!important样式,我试图用!important样式内联重写,因此使用.width()之类的方法不起做用,由于它被个人外部!important样式覆盖。 app

此外,将覆盖之前的值的值的计算 ,因此我不能简单地建立另外一个外部风格。 ide


#1楼

David Thomas的答案描述了一种使用$('#elem').attr('style', …) ,但警告使用它会删除style属性中先前设置的样式。 这是一种使用attr()而不出现问题的方法: spa

var $elem = $('#elem');
$elem.attr('style', $elem.attr('style') + '; ' + 'width: 100px !important');

做为功​​能: code

function addStyleAttribute($element, styleAttribute) {
    $element.attr('style', $element.attr('style') + '; ' + styleAttribute);
}
addStyleAttribute($('#elem'), 'width: 100px !important');

这是一个JS Bin演示element


#2楼

此解决方案不会覆盖任何先前的样式,而只是应用您须要的样式: get

var heightStyle = "height: 500px !important";
if ($("foo").attr('style')) {
  $("foo").attr('style', heightStyle + $("foo").attr('style').replace(/^height: [-,!,0-9,a-z, A-Z, ]*;/,''));
else {
  $("foo").attr('style', heightStyle);
}

#3楼

咱们首先须要删除之前的样式。 我使用正则表达式将其删除。 这是更改颜色的示例: io

var SetCssColorImportant = function (jDom, color) {
       var style = jDom.attr('style');
       style = style.replace(/color: .* !important;/g, '');
       jDom.css('cssText', 'color: ' + color + ' !important;' + style); }

#4楼

这是我遇到这个问题后所作的... function

var origStyleContent = jQuery('#logo-example').attr('style');
jQuery('#logo-example').attr('style', origStyleContent + ';width:150px !important');

#5楼

在头部附加样式的另外一种方法:

$('head').append('<style> #elm{width:150px !important} </style>');

这会将样式附加到全部CSS文件以后,所以它将具备比其余CSS文件更高的优先级并被应用。

相关文章
相关标签/搜索