如何删除所有链接的样式表但按ID保留一个?

时间:2014-09-19 13:12:29

标签: javascript jquery

我需要删除头部中的所有链接样式表,同时保留其中一个。

除了id = custom_stylesheet

之外,我希望将它们全部删除
<link type="text/css" href="" rel="stylesheet"></link>
<link type="text/css" href="" rel="stylesheet"></link>
<link type="text/css" href="" rel="stylesheet"></link>
<link id="skin_stylesheet" type="text/css" href="" rel="stylesheet"></link>
<link id="custom_stylesheet" type="text/css" href="" rel="stylesheet"></link>

这可以将它们全部删除,但我如何编辑它以保留一个?

$('link[rel=stylesheet]').remove();

3 个答案:

答案 0 :(得分:4)

您可以使用:not.not()

$('link[rel=stylesheet]:not(#custom_stylesheet)').remove();
$('link[rel=stylesheet]').not('#custom_stylesheet').remove();

答案 1 :(得分:1)

有一个document.styleSheets collection,其中包含文档的所有样式表。优点是它包含所有样式表,即由 link 元素和样式元素添加的样式表。

所以迭代:

var sheet, sheets = document.styleSheets;

for (var i=0, iLen=sheets.length; i<iLen; i++) {
  sheet = sheets[i];

  if (sheet.id != 'custom_stylesheet') {
    sheet.parentNode.removeChild(sheet);
  }
}

我确定这是一个使用每个的jQuery版本,例如:

jQuery.each(document.styleSheets, function(i, sheet) {
  if (sheet.id != 'custom_sytleSheet') $(sheet).remove();

  // or much more efficient
  // if (sheet.id != 'custom_sytleSheet') sheet.parentNode.removeChild(sheet)
})

答案 2 :(得分:-1)

 $('link[rel=stylesheet]').filter(function(){
    return  this.id !="custom_stylesheet";
 }).remove();