用CSS或jQuery覆盖!important属性

62

(这是在Chrome扩展中使用内容脚本)

我需要覆盖一些被网页标记为!important的CSS样式属性。这可行吗?

例如,如果我想去掉被标记为important的边框:

$(".someclass").css('border','none'); //does not work

2
你在 Stack Overflow 上搜索了吗?我找到了 https://dev59.com/c3RB5IYBdhLWcg3w77kn - Šime Vidas
@ŠimeVidas:那个问题涉及JavaScript;而此问题与jQuery有关。虽然最终的解决方法可能相同,但问题的作者不会知道(我也不知道),我认为大多数开发人员都会同意,在存在jQuery解决方案时最好使用它。 - Michael Scheper
可能是如何使用.css()应用!important?的重复问题。 - Prateek
6个回答

129

给你:

$( '.someclass' ).each(function () {
    this.style.setProperty( 'border', 'none', 'important' );
});

实时演示:http://jsfiddle.net/Gtr54/

元素的style对象的.setProperty方法允许您传递第三个参数,该参数表示优先级。因此,您可以使用自己的!important值替换已有的!important值。据我所知,使用jQuery无法设置!important优先级,因此您的唯一选择是使用内置的.setProperty方法。


2
在IE8中失败,显示“对象不支持此属性或方法”。 - Stuart Dobson
3
是的,IE8不能正常运行。 - Šime Vidas
4
也在Mosaic 2中失败了。:-P - Michael Scheper
9
这是一个很好的回答,但有一个要注意的地方——如果 $('#container).style 不起作用,可以使用 $('#container)[0].style - yaru
1
@yaru 是的,style 属性只能在 DOM 元素本身上使用,而不能在 jQuery 对象上使用。 - Šime Vidas
祝福您先生,祝福您。 - user3748818

51

你也可以这样做:

$(".someclass").css("cssText", "border: none !important;");

7
这会覆盖样式。 - Miguel

15

这应该会有所帮助。

$(".someclass").attr("style","border:none!important");

更新,以避免覆盖所有样式:

var existingStyles = $(".someclass").attr("style");
$(".someclass").attr("style", existingStyles+"border:none!important");

1
Will replace all other styles - melvin

1
我们可以使用jQuery添加类。
$("someclass").addClass("test");

<style>
.test{
border:none !important;
}
</style>

这不适用于动态生成的样式(如高度或颜色)。仅仅是荒谬的,jQuery开发人员将其推销为可行的解决方法。 - ADTC

0

还有另一种方式

$("#m_divList tbody").find("tr[data-uid=" + row.uid + "]").find('td').css("cssText", "color: red !important;");

css("cssText", "color: red !important;");

css("cssText", "color: red !important;");

可以用于在JavaScript中设置CSS样式。其中,"cssText"是要设置的CSS属性,"color: red !important;"是要设置的CSS值。这个函数可以让你在不改变其他CSS属性的情况下,只修改一个特定的CSS属性。

-1
使用以下代码来覆盖jQuery中的important。
<style>  
  div.woocommerce-variation-add-to-cart-disabled {
    display: none ! important;
  }
</style>

<div class="woocommerce-variation-add-to-cart variations_button woocommerce-variation-add-to-cart-disabled">
  <script>
    jQuery(document).ready(function() {
      jQuery('.woocommerce-variation-add-to-cart').attr('style', 'display: block !important;');
    });
  </script>
</div>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接