它在Firefox和Chrome中运行良好,但在IE8中不起作用。这是html结构:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
// this does not work in IE
$('<style type="text/css"></style>').text('body {margin: 0;}').appendTo('head');
});
</script>
</head>
<body>
</body>
</html>
在IE中这样做的替代方法是什么?
答案 0 :(得分:50)
这在IE7中对我有用:
$('<style type="text/css">body {margin: 0;}</style>').appendTo($('head'));
另一种可能更容易阅读的语法:
$('head').append('<style type="text/css">body {margin:0;}</style>');
但是,调用.text(val)
或.html(val)
来设置style
标记的内容将导致抛出异常,因为它们设置了innerHTML
DOM属性,只读的。
以下是innerHTML
属性的IE's documentation:
该属性对所有人都是可读/写的 对象除了以下对象 它是只读的:COL,COLGROUP, FRAMESET,HEAD,HTML,STYLE,TABLE, TBODY,TFOOT,THEAD,TITLE,TR。
答案 1 :(得分:5)
我个人会这样做。
var styles = {
margin: '0',
padding: '5px',
border: 'solid 0px black'
}
$('body').css(styles);
答案 2 :(得分:3)
我遇到了与jQuery的依赖插件相同的问题,只需使用以下代码:
$('head').append('<style>' + content + '</style>');
然后您的代码几乎适用于所有浏览器,此处“内容”是您在外部定义的变量,它将包含您要插入<style>
标记的数据。它肯定会奏效。
答案 3 :(得分:2)
使用JQuery动态加载CSS文件。
var link = $("<link>");
link.attr({
type: 'text/css',
rel: 'stylesheet',
href: <your CSS file url>
});
$("head").append( link );
答案 4 :(得分:1)
尝试:$('<div/>').load("style.css",function(style){
$(data.appendTo).append('<style type="text/css">' + style + '</style>');
});
答案 5 :(得分:0)
尝试jQuery中的css
函数:
$( 'body' ).css( { margin: 0 } )