覆盖!重要的是css或jquery

Wil*_*son 47 css jquery content-script

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

我需要覆盖网页标记为的一些css属性!important.这可能吗?

例如,如果我想摆脱标记为重要的边界:

$(".someclass").css('border','none'); //does not work
Run Code Online (Sandbox Code Playgroud)

Šim*_*das 112

干得好:

$( '.someclass' ).each(function () {
    this.style.setProperty( 'border', 'none', 'important' );
});
Run Code Online (Sandbox Code Playgroud)

现场演示: http ://jsfiddle.net/Gtr54/

.setProperty元素style对象的方法使您能够传递表示优先级的第三个参数.所以,你用你自己的重要价值来覆盖一个重要的价值.据我所知,不可能用jQuery设置!important优先级,所以你唯一的选择是内置.setProperty方法.

  • 一个警告是一个很好的答案 - 如果`$('#container).style`不起作用 - 使用`$('#container)[0] .style`代替 (5认同)
  • 马赛克2也失败了.:-P (4认同)
  • @StuartDobson是的,在IE8中失败了 - .- (3认同)
  • IE8中的"对象不支持此属性或方法"失败 (2认同)

haw*_*126 48

你也可以这样做:

$(".someclass").css("cssText", "border: none !important;");
Run Code Online (Sandbox Code Playgroud)

  • 这将覆盖风格 (5认同)

Pal*_*edi 5

这应该有所帮助。

$(".someclass").attr("style","border:none!important");
Run Code Online (Sandbox Code Playgroud)

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

var existingStyles = $(".someclass").attr("style");
$(".someclass").attr("style", existingStyles+"border:none!important");
Run Code Online (Sandbox Code Playgroud)