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调用C#代码
Jan 17 Javascript
JS中处理与当前时间间隔的函数代码
May 23 Javascript
jquery固定底网站底部菜单效果
Aug 13 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
jqgrid 表格数据导出实例
Nov 21 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
用js实现放大镜的效果的简单实例
May 23 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
Sep 19 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 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
PHP文件上传实例详解!!!
2007/01/02 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
python多线程同步之文件读写控制
2021/02/25 Python
计算机应用职专应届生求职信
2013/11/12 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
小学生期末评语大全
2014/04/21 职场文书
村庄绿化方案
2014/05/07 职场文书
学习十八大宣传标语
2014/10/09 职场文书
工作检讨书怎么写
2014/10/10 职场文书
签字仪式主持词
2015/07/03 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
任命书格式模板
2015/09/22 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书