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判断RadioButtonList和RadioButton中是否有选中项示例
Sep 29 Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 Javascript
JS实现的一个简单的Autocomplete自动完成例子
Apr 16 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
javascript实现手动点赞效果
Apr 09 Javascript
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
vue使用i18n实现国际化的方法详解
Sep 05 Javascript
基于vue 动态菜单 刷新空白问题的解决
Aug 06 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
使用JavaScript破解web
2018/09/28 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
高级方案规划工程师岗位职责
2013/11/29 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
毕业生找工作求职信
2014/08/05 职场文书
法人授权委托书范本
2014/09/17 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
讲座通知范文
2015/04/23 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
Linux安装Docker详细教程
2022/07/07 Servers