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 相关文章推荐
javascript高亮效果的二种实现方法
Sep 14 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
JavaScript中的prototype和constructor简明总结
Apr 05 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
论JavaScript模块化编程
Mar 07 Javascript
原生js实现打字动画游戏
Feb 04 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
Feb 15 Javascript
Vue的事件响应式进度条组件实例详解
Feb 04 Javascript
Three.js实现3D机房效果
Dec 30 Javascript
如何解决webpack-dev-server代理常切换问题
Jan 09 Javascript
js贪心算法 钱币找零问题代码实例
Sep 11 Javascript
vue实现直播间点赞飘心效果的示例代码
Sep 20 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
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
php微信公众号开发之简答题
2018/10/20 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
javascript instanceof,typeof的区别
2010/03/24 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
详解前后端分离之VueJS前端
2017/05/24 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
python函数与方法的区别总结
2019/06/23 Python
Python的Lambda函数用法详解
2019/09/03 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
什么是网络协议
2016/04/07 面试题
药学专业个人自我评价
2013/11/11 职场文书
大学毕业通用个人的求职信
2013/12/08 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers