如何从当前页面动态删除样式表

Nat*_*man 42 javascript css jquery stylesheet

有没有办法从页面动态删除当前样式表?

例如,如果页面包含:

<link rel="stylesheet" type="text/css" href="http://..." />
Run Code Online (Sandbox Code Playgroud)

...有没有办法稍后用JavaScript禁用它?使用jQuery的额外点.

Bri*_*van 62

好吧,假设您可以使用jQuery来定位它,它应该像调用remove()元素一样简单:

$('link[rel=stylesheet]').remove();
Run Code Online (Sandbox Code Playgroud)

这将删除页面上的所有外部样式表.如果你知道网址的一部分,那么你可以删除你正在寻找的那个:

$('link[rel=stylesheet][href~="foo.com"]').remove();
Run Code Online (Sandbox Code Playgroud)

并在Javascript中

这是使用查询选择器和foreach数组删除所有内容的示例

Array.prototype.forEach.call(document.querySelectorAll('link[rel=stylesheet]'), function(element){
      try{
        element.parentNode.removeChild(element);
      }catch(err){}
    });

//or this is similar
var elements = document.querySelectorAll('link[rel=stylesheet]');
for(var i=0;i<elements.length;i++){
    elements[i].parentNode.removeChild(elements[i]);
}
Run Code Online (Sandbox Code Playgroud)

  • *[facepalm]*我完全忘记了属性选择器. (6认同)
  • 根据[这个问题](http://stackoverflow.com/q/3182840/578288),仅删除`link`元素是不够的.你应该首先使用[`.prop('disabled',true)`]制作[`disabled`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement#Properties) (http://api.jquery.com/prop/).虽然自编写该问题(2010年)以来浏览器可能已经发生了变化,但您不需要禁用"链接". (4认同)

Sir*_*ert 21

如果您知道样式表的ID,请使用以下命令.当然,任何其他获取样式表的方法都可以.这是直接的DOM,不需要使用任何库.

var sheet = document.getElementById(styleSheetId);
sheet.disabled = true;
sheet.parentNode.removeChild(sheet);
Run Code Online (Sandbox Code Playgroud)


Dam*_*igh 8

这将禁用与针对每个样式表的 URL 提供的正则表达式匹配的任何样式表。 searchRegEx

let searchRegEx = /example.*/;

for (var i = 0; i < document.styleSheets.length; i++) {
    if (document.styleSheets[i].href.search(searchRegEx) != -1) {
        document.styleSheets[i].disabled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)


use*_*810 8

我找到了这个页面,同时寻找一种方法来使用jquery删除样式表.当我读到以下内容时,我以为我找到了正确的答案

如果你知道网址的一部分,那么你可以删除你正在寻找的那个: $('link[rel=stylesheet][href~="foo.com"]').remove();"

我喜欢这个解决方案,因为我想要删除的样式表具有相同的名称但位于不同的文件夹中.但是这段代码没有用,所以我把操作符改为了*=,它运行得很完美:

$('link[rel=stylesheet][href*="mystyle"]').remove();
Run Code Online (Sandbox Code Playgroud)

只是想我会分享这个,以防它对某人有用.


eon*_*eon 6

没有人提到在纯 Javascript 中删除没有 ID 的特定样式表:

 document.querySelector('link[href$="something.css"]').remove()
Run Code Online (Sandbox Code Playgroud)

(“$=”在 href 末尾查找)