我很难应用这样的风格!重要的我尝试过:
$("#elem").css("width", "100px !important");
这没有任何作用;不应用任何宽度样式。有没有类似jQuery的方法来应用这样的样式而不必覆盖cssText(这意味着我需要先解析它,等等)?
编辑:我应该补充一下,我有一个带有!我试图用!重要的样式内联,因此使用.width()等不会起作用,因为它会被我的外部重写!重要的风格。
此外,将覆盖上一个值的值是计算出来的,因此我不能简单地创建另一个外部样式。
我很难应用这样的风格!重要的我尝试过:
$("#elem").css("width", "100px !important");
这没有任何作用;不应用任何宽度样式。有没有类似jQuery的方法来应用这样的样式而不必覆盖cssText(这意味着我需要先解析它,等等)?
编辑:我应该补充一下,我有一个带有!我试图用!重要的样式内联,因此使用.width()等不会起作用,因为它会被我的外部重写!重要的风格。
此外,将覆盖上一个值的值是计算出来的,因此我不能简单地创建另一个外部样式。
当前回答
另一种解决此问题的简单方法是添加样式属性:
$('.selector').attr('style', 'width:500px !important');
其他回答
您可以这样做:
$("#elem").css("cssText", "width: 100px !important;");
使用“cssText”作为属性名,并将您希望添加到CSS中的任何内容作为其值。
三个工作示例
我也遇到过类似的情况,但在与.clost()进行了很长一段时间的斗争之后,我使用了.find()。
示例代码
// Allows contain functions to work, ignores case sensitivity
jQuery.expr[':'].contains = function(obj, index, meta, stack) {
result = false;
theList = meta[3].split("','");
var contents = (obj.textContent || obj.innerText || jQuery(obj).text() || '')
for (x=0; x<theList.length; x++) {
if (contents.toLowerCase().indexOf(theList[x].toLowerCase()) >= 0) {
return true;
}
}
return false;
};
$(document).ready(function() {
var refreshId = setInterval( function() {
$("#out:contains('foo', 'test456')").find(".inner").css('width', '50px', 'important');
}, 1000); // Rescans every 1000 ms
});
可供替代的
$('.inner').each(function () {
this.style.setProperty('height', '50px', 'important');
});
$('#out').find('.inner').css({ 'height': '50px'});
工作:http://jsfiddle.net/fx4mbp6c/
我认为它工作正常,可以覆盖之前的任何其他CSS(this:DOM元素):
this.setAttribute('style', 'padding:2px !important');
当“事件”时,我尝试更改菜单项的文本颜色时遇到了同样的问题。当我遇到同样的问题时,我发现的最佳方法是:
第一步:在CSS中创建一个新的类,例如:
.colorw{ color: white !important;}
最后一步:使用addClass方法应用该类,如下所示:
$('.menu-item>a').addClass('colorw');
问题已解决。
您可以通过两种方式实现这一点:
$("#elem").prop("style", "width: 100px !important"); // this is not supported in chrome
$("#elem").attr("style", "width: 100px !important");