我在应用!important
样式时遇到麻烦。 我试过了: css
$("#elem").css("width", "100px !important");
这什么都不作 ; 不会应用任何宽度样式。 有没有一种相似jQuery的方式来应用这种样式,而没必要覆盖cssText
(这意味着我首先须要解析它,等等)? 正则表达式
编辑 :我应该补充一点,我有一个样式表,具备!important
样式,我试图用!important
样式内联重写,因此使用.width()
之类的方法不起做用,由于它被个人外部!important
样式覆盖。 app
此外,将覆盖之前的值的值的计算 ,因此我不能简单地建立另外一个外部风格。 ide
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
此解决方案不会覆盖任何先前的样式,而只是应用您须要的样式: 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); }
咱们首先须要删除之前的样式。 我使用正则表达式将其删除。 这是更改颜色的示例: io
var SetCssColorImportant = function (jDom, color) { var style = jDom.attr('style'); style = style.replace(/color: .* !important;/g, ''); jDom.css('cssText', 'color: ' + color + ' !important;' + style); }
这是我遇到这个问题后所作的... function
var origStyleContent = jQuery('#logo-example').attr('style'); jQuery('#logo-example').attr('style', origStyleContent + ';width:150px !important');
在头部附加样式的另外一种方法:
$('head').append('<style> #elm{width:150px !important} </style>');
这会将样式附加到全部CSS文件以后,所以它将具备比其余CSS文件更高的优先级并被应用。