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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
Aug 02 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
input输入密码变黑点密文的实现方法
Jan 09 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
Element PageHeader页头的使用方法
Jul 26 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 Javascript
React实现动效弹窗组件
Jun 21 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
让你的网站首页自动选择语言转跳
2006/12/06 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
python学生信息管理系统
2018/03/13 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
简单了解python的一些位运算技巧
2019/07/13 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
python属于解释语言吗
2020/06/11 Python
使用npy转image图像并保存的实例
2020/07/01 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
竞选班长的演讲稿
2014/04/24 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
理财计划书
2014/08/14 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
Golang的继承模拟实例
2021/06/30 Golang
java泛型通配符详解
2021/07/25 Java/Android
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python