jQuery动态加载css文件实现方法


Posted in Javascript onJune 15, 2016

有时我们可能会需要使用 jQuery 来加载一个外部的 css 文件,如在切换页面布局时。思路是创建一个 link 元素,并将它添加到 标记中即可,下边首先看看怎么使用 jQuery 来实现。

下边是我喜欢的写法:

$("<link>")
.attr({ rel: "stylesheet",
type: "text/css",
href: "site.css"
})
.appendTo("head");

有些朋友可能会使用下边的写法,只是形式有些小差异(append appendTo),原理还是一样的。

$("head").append("<link>");
css = $("head").children(":last");
css.attr({
rel: "stylesheet",
type: "text/css",
href: "/Content/Site.css"
});

最后,有的朋友可能希望直接在 javascript 中使用,方法如下:

function addCSS() {
var link = document.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = '/Content/Site.css';
document.getElementsByTagName("head")[0].appendChild(link);
}

如果是在 web 交互时,我们可以使用上述的方法通过 jQuery 或者 javascript 来引入一个 css 文件,否则还是建议使用原始的方法。

下面我还介绍一个可加载js,css的实例

代码如下

$.extend({
includePath: '',
include: function(file) {
var files = typeof file == "string" ? [file]:file;
for (var i = 0; i < files.length; i++) {
var name = files[i].replace(/^s|s$/g, "");
var att = name.split('.');
var ext = att[att.length - 1].toLowerCase();
var isCSS = ext == "css";
var tag = isCSS ? "link" : "script";
var attr = isCSS ? " type='text/css' rel='stylesheet' " : " language='javascript' type='text/javascript' ";
var link = (isCSS ? "href" : "src") + "='" + $.includePath + name + "'";
if ($(tag + "[" + link + "]").length == 0) document.write("<" + tag + attr + link + "></" + tag + ">");
}
}
});
//使用方法
$.includePath = 'http://hi.xxx/javascript/'; 
$.include(['json2.js', 'jquery.tree.js', 'jquery.tree.css']);

一个完整的实例

index.html

<!-- Created by Barrett at RRPowered.com -->
<!-- File name index.html -->
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax
/libs/jquery/1.4.4/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="default.css">
<title>A simple jQuery image slide</title>
<script type="text/javascript">
$(function(){
$(".theme").click(function(){
var theme=$(this).attr("rel");
$("link").attr("href",$(this).attr('rel'));
$("head").append("<link>");
});
});
</script>
</head>
<body>
<div class="theme" rel="blue.css">Blue</div>
<div class="theme" rel="orange.css">Orange</div>
<div class="theme" rel="yellow.css">Yellow</div>
<div class="theme" rel="default.css">Default</div>
<div class="container">
<div class="menu">Tab1 Tab2 Tab3 Tab4 Tab5</div>
<div class="inner">
Lorem ipsum dolor sit amet
</div>
<div class="footer">copyright yoursite 2011</div>
</div>
</body>
</html>
default.css
body{
background-color:#ffffff;
font-family:"arial";
}
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
.inner{
padding:20px;
border:solid #333333 1px;
}
.menu{
background-color:#f2f2f2;
padding:10px;
font-weight:bold;
}
.footer{
background-color:#f9f9f9;
padding:5px;
}
blue.css
body{
background-color:#2E9AFE;
font-family:"arial";
}
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
.inner{
padding:20px;
border:solid #333333 1px;
background-color:#58ACFA;
color:#ffffff;
}
.menu{
background-color:#f2f2f2;
padding:10px;
font-weight:bold;
}
.footer{
background-color:#f9f9f9;
padding:5px;
}
yellow.css
body{
background-color:#F7FE2E;
font-family:"arial";
}
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
.inner{
padding:20px;
border:solid #333333 1px;
background-color:#f6f6f6;
}
.menu{
background-color:#F2F5A9;
padding:10px;
font-weight:bold;
}
.footer{
background-color:#F2F5A9;
padding:5px;
}
orange.css
body{
background-color:#FE9A2E;
font-family:"arial";
}
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
.inner{
padding:20px;
background-color:#F7BE81;
color:#404040;
}
.menu{
background-color:#ffffff;
padding:10px;
font-weight:bold;
color:#FFBF26;
}
.footer{
background-color:#ffffff;
padding:5px;
color:#FFBF26;
}
Javascript 相关文章推荐
jQuery find和children方法使用
Jan 31 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
JavaScript中的null和undefined区别介绍
Jan 01 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
jQueryUI中的datepicker使用方法详解
May 25 Javascript
jQuery内存泄露解决办法
Dec 13 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
JS前端宏任务微任务及Event Loop使用详解
Jul 23 Javascript
异步加载JS、CSS代码(推荐)
Jun 15 #Javascript
全面解析Javascript无限添加QQ好友原理
Jun 15 #Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 #Javascript
JavaScript操作 url 中 search 部分方法函数
Jun 15 #Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 #Javascript
JS封装的自动创建表格的实现代码
Jun 15 #Javascript
基于JavaScript代码实现自动生成表格
Jun 15 #Javascript
You might like
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
python中的列表推导浅析
2014/04/26 Python
Python列表(list)常用操作方法小结
2015/02/02 Python
python创建进程fork用法
2015/06/04 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
python raise的基本使用
2020/09/10 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
先进典型发言材料
2014/12/30 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏