用jQuery替换样式表

Ale*_*lex 1 html css jquery stylesheet

替换是实时完成的 - 用户点击某些内容,样式更改:

$('link#mystyle').attr('disabled', 'disabled');
$('link#mystyle').remove();

if(new_style){
  $('head').append('<link rel="stylesheet" id="mystyle" href="' 
                    + new_style +'.css" type="text/css" />');

}
Run Code Online (Sandbox Code Playgroud)

问题是默认情况下样式表链接后有一个内联样式块:

<style>
  ...
</style>
Run Code Online (Sandbox Code Playgroud)

我上面的代码将删除原始样式表,并在样式块之后附加新样式表,因此新样式表将覆盖样式块中的某些规则.

我不希望这样,所以我能以某种方式将我的新样式添加到同一个地方,所以新样式表中的规则应用的优先级与初始样式表规则相同吗?

kro*_*hre 6

更好的解决方案是根据body标签上的高级类或id来格式化css:

/*Style 1*/
body.style1 h1{...}
body.style1 ...

/*Style 2*/
body.style2 h1{...}
body.style2 ...
Run Code Online (Sandbox Code Playgroud)

然后,您所要做的就是更改body标签上的类:

$('#something-to-click').click(function(){
  ($('body').hasClass('style1')){
    $('body').addClass('style2').removeClass('style1');
  }else{    
    $('body').addClass('style1').removeClass('style2');
  }
});
Run Code Online (Sandbox Code Playgroud)