我不想使用style.css中的样式,所以我决定从DOM中删除style.css。这在Firefox和IE8中运行得很好,但在IE6中却没有这样做:
$("LINK[href='http://www.example.com/style.css']").remove();
任何其他解决方案,使用jQuery?
这是一个例子:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Testing</title>
<script type="text/javascript" src="path/to/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("link[href*='style.css']").remove();
});
</script>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="content">...</div>
</body>
</html>
这是CSS(style.css):
#content {
background-color:#333;
}
仅在IE中#content仍然是黑暗的。 :(
也许是jQuery bug?
答案 0 :(得分:20)
这不是jQuery中的错误,它是IE呈现引擎的错误(或可能是一个功能)。
看来这个问题是由于从DOM中删除LINK元素后Internet Explorer无法正确重新呈现页面这一事实。
在这种特殊情况下,DOM上不再存在LINK标记,但IE仍显示已加载到内存中的CSS。
解决方法/解决方案是使用.disabled
属性禁用样式表,如下所示:
// following code will disable the first stylesheet
// the actual DOM-reference to the element will not be removed;
// this is particularly useful since this allows you to enable it
// again at a later stage if you'd want to.
document.styleSheets[0].disabled = true;
编辑回复您的评论:
或者,如果您想通过href删除它,请使用以下代码:
var styleSheets = document.styleSheets;
var href = 'http://yoursite.com/foo/bar/baz.css';
for (var i = 0; i < styleSheets.length; i++) {
if (styleSheets[i].href == href) {
styleSheets[i].disabled = true;
break;
}
}
答案 1 :(得分:9)
也许IE6对href
属性中的URL做了什么奇怪的事情?尝试类似:
$("LINK[href*='style.css']").remove();
(即检查href
值是否包含“style.css”)
然而,这只是猜测。如果这不起作用,我建议关于属性选择器和remove
方法的主题密切检查JQuery文档。
还要记住,它实际上也是一个错误并非不可能。 (IE6通常会导致许多涉及JavaScript和DOM操作的问题,等等。)
答案 2 :(得分:4)
主题很旧,但您只能在链接元素中添加ID,并按元素删除它:
$("#id").remove();
答案 3 :(得分:0)
也许在标签名称上使用小写?