我很难应用这样的风格!重要的我尝试过:
$("#elem").css("width", "100px !important");
这没有任何作用;不应用任何宽度样式。有没有类似jQuery的方法来应用这样的样式而不必覆盖cssText(这意味着我需要先解析它,等等)?
编辑:我应该补充一下,我有一个带有!我试图用!重要的样式内联,因此使用.width()等不会起作用,因为它会被我的外部重写!重要的风格。
此外,将覆盖上一个值的值是计算出来的,因此我不能简单地创建另一个外部样式。
我很难应用这样的风格!重要的我尝试过:
$("#elem").css("width", "100px !important");
这没有任何作用;不应用任何宽度样式。有没有类似jQuery的方法来应用这样的样式而不必覆盖cssText(这意味着我需要先解析它,等等)?
编辑:我应该补充一下,我有一个带有!我试图用!重要的样式内联,因此使用.width()等不会起作用,因为它会被我的外部重写!重要的风格。
此外,将覆盖上一个值的值是计算出来的,因此我不能简单地创建另一个外部样式。
当前回答
问题是由jQuery不理解!重要属性,因此无法应用该规则。
您可能能够解决这个问题,并通过addClass()引用该规则来应用该规则:
.importantRule { width: 100px !important; }
$('#elem').addClass('importantRule');
或者使用attr():
$('#elem').attr('style', 'width: 100px !important');
然而,后一种方法将取消设置任何先前设置的内联样式规则。所以使用时要小心。
当然,有一个很好的论点是@Nick Craver的方法更容易/更明智。
上面的attr()方法稍作修改以保留原始样式字符串/财产,并按照falko在注释中的建议进行了修改:
$('#elem').attr('style', function(i,s) { return (s || '') + 'width: 100px !important;' });
其他回答
这样做:
$("#elem").get(0).style.width= "100px!important";
当“事件”时,我尝试更改菜单项的文本颜色时遇到了同样的问题。当我遇到同样的问题时,我发现的最佳方法是:
第一步:在CSS中创建一个新的类,例如:
.colorw{ color: white !important;}
最后一步:使用addClass方法应用该类,如下所示:
$('.menu-item>a').addClass('colorw');
问题已解决。
我认为它工作正常,可以覆盖之前的任何其他CSS(this:DOM元素):
this.setAttribute('style', 'padding:2px !important');
如果它不那么相关,并且由于您正在处理一个元素#elem,那么您可以将其id更改为其他元素,并根据您的意愿对其进行样式设置。。。
$('#elem').attr('id', 'cheaterId');
在CSS中:
#cheaterId { width: 100px;}
此解决方案不覆盖以前的任何样式,它只应用您需要的样式:
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);
}