我怎样才能做到这一点?
我试过
$('link[title="mystyle"]').remove();
尽管该元素已被移除,但样式仍会应用于当前页面(在 Opera 和 Firefox 中)。
有没有其他办法?
我怎样才能做到这一点?
我试过
$('link[title="mystyle"]').remove();
尽管该元素已被移除,但样式仍会应用于当前页面(在 Opera 和 Firefox 中)。
有没有其他办法?
为了满足 ie 的需求,您必须将样式表设置为禁用,因为它会将 css 样式保留在内存中,因此删除元素将不起作用,如果我没记错的话,它还可能导致它在某些情况下崩溃。
这也适用于跨浏览器。
例如
document.styleSheets[0].disabled = true;
//所以在你的情况下使用jquery试试
$('link[title=mystyle]')[0].disabled=true;
我设法做到了:
$('link[title="mystyle"]').attr('disabled', 'disabled');
似乎这是从内存中删除样式的唯一方法。然后我补充说:
$('link[title="mystyle"]').remove();
也删除元素。
要禁用您选择的样式表:
$('link[title="mystyle"]').prop('disabled', true);
如果您不想再次应用该样式表,则.remove()
可以。但是,如果您想稍后重新启用它,请不要这样做。
要重新启用样式表,请执行以下操作(只要您没有remove
使用样式表的元素):
$('link[title="mystyle"]').prop('disabled', false);
在上面的代码中,重要的是使用.prop
,而不是.attr
。如果您使用.attr
,代码将在某些浏览器中工作,但不适用于 Firefox。这是因为,根据MDN,disabled
是所述的属性HTMLLinkElement
DOM对象,但不是所述的一个属性link
的HTML元素。使用disabled
作为HTML属性是非标准的。
没有 jQuery 解决方案
如果您可以将 id 添加到您的链接标签
<link rel="stylesheet" href="css/animations.css" id="styles-animations">
document.getElementById("styles-animations").disabled = true;
如果您知道 css 文件在文档中的索引位置
document.styleSheets[0].disabled = true; // first
document.styleSheets[document.styleSheets.length - 1].disabled = true; // last
如果要按名称禁用样式,可以使用此功能
/**
* @param [string] [styleName] [filename with suffix e.g. "style.css"]
* @param [boolean] [disabled] [true disables style]
*/
var disableStyle = function(styleName, disabled) {
var styles = document.styleSheets;
var href = "";
for (var i = 0; i < styles.length; i++) {
href = styles[i].href.split("/");
href = href[href.length - 1];
if (href === styleName) {
styles[i].disabled = disabled;
break;
}
}
};
注意:确保样式文件名是唯一的,这样您就没有“dir1/style.css”和“dir2/style.css”。在这种情况下,它只会禁用第一种样式。
使用纯javascript:
var stylesheet = document.getElementById('stylesheetID');
stylesheet.parentNode.removeChild(stylesheet);