加载外部css文件,如jquery中的脚本,也兼容

Sta*_*arx 66 jquery

有没有办法加载外部CSS文件,比如我们使用.getScript方法加载JS文件,也使用.getScript中的回调函数

$("<link/>", {
   rel: "stylesheet",
   type: "text/css",
   href: "/styles/yourcss.css"
}).appendTo("head");
Run Code Online (Sandbox Code Playgroud)

这适用于FireFox和类似但不在IE中.

Red*_*ves 108

在jQuery 1.4中:

$("<link/>", {
   rel: "stylesheet",
   type: "text/css",
   href: "/styles/yourcss.css"
}).appendTo("head");
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/jQuery/#jQuery2

  • 好的,但是一旦加载了CSS文件,如何使用像.getScript()这样的回调函数 (7认同)
  • 这似乎是问题代码的精确复制和粘贴,问题是询问是否存在与[jQuery.getScript()](http://api.jquery.com/jQuery.getScript/)等效的代码答案是“否”。 (2认同)

xgM*_*gMz 18

基于响应的快速功能.

loadCSS = function(href) {

  var cssLink = $("<link>");
  $("head").append(cssLink); //IE hack: append before setting href

  cssLink.attr({
    rel:  "stylesheet",
    type: "text/css",
    href: href
  });

};
Run Code Online (Sandbox Code Playgroud)

用法:

loadCSS("/css/file.css");
Run Code Online (Sandbox Code Playgroud)


Rau*_*ait 16

$("head").append("<link>");
var css = $("head").children(":last");
css.attr({
      rel:  "stylesheet",
      type: "text/css",
      href: "address_of_your_css"
});
Run Code Online (Sandbox Code Playgroud)

  • 使用appendTo会更容易,更直观,如下所示:`$("<link>").attr({rel:"stylesheet",type:"text/css",href:"address_of_your_css"}).appendTo( "头");` (4认同)

Ed *_*tes 11

我认为OP想要做的是异步加载样式表并添加它.这适用于Chrome 22,FF 16和IE 8,用于存储为文本的CSS规则集:

$.ajax({
    url: href,
    dataType: 'text',
    success: function(data) {
        $('<style type="text/css">\n' + data + '</style>').appendTo("head");                    
    }                  
});
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我有时也希望加载的CSS替换以前以这种方式加载的CSS.为此,我在开头发表评论,说"/*标记此ID = 102*/",然后我可以这样做:

// Remove old style
$("head").children().each(function(index, ele) {
    if (ele.innerHTML && ele.innerHTML.substring(0, 30).match(/\/\* Flag this ID=102 \*\//)) {
        $(ele).remove();
        return false;    // Stop iterating since we removed something
    }
});
Run Code Online (Sandbox Code Playgroud)