【发布时间】:2012-05-03 21:08:10
【问题描述】:
替换是实时完成的——用户点击某些东西,样式会改变:
$('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" />');
}
问题是样式表链接后面默认有一个内联样式块:
<style>
...
</style>
而且我上面的代码会删除原来的样式表,并在样式块之后追加新的样式表,所以新的样式表会覆盖样式块中的一些规则。
我不希望这样,所以我可以以某种方式将我的新样式附加到同一个位置,以便以与初始样式表规则相同的优先级应用新样式表中的规则吗?
【问题讨论】:
-
添加新的 CSS 文件后,您可以返回,抓取 STYLE 块,将其删除,然后重新添加。不过,看起来很hacky。我确信有更好的选择。
-
你可以换掉链接标签中的 href 参数。您需要帮助吗?
-
虽然我没试过,$('link#mystyle').replaceWith($('')),应该可以工作
-
是的,我想问一下如果只是更改 href 是否可行:
$("#mystyle").attr("href", new_style); -
在 IE 中更改 href 在执行 3-4 次后失败。看来这是这个浏览器的内存问题..
标签: jquery html css stylesheet