项目中有个一键切换皮肤的功能,感觉还不错,记录下,就是各颜色样式设置起来太复杂了,不知道有没有更简便的方法:

1、切换皮肤结构层

<li title="<s:text name='cems.skin'/>">
<a data-toggle="collapse" href="#colorPick"><img src="${basePath}/images/homePageicon/colorPick.png" /></a>
</li>

使用"Bootstrap 折叠(Collapse)插件":下面网站可以详细学习

Bootstrap 折叠(Collapse)插件:http://www.runoob.com/bootstrap/bootstrap-collapse-plugin.html

2、切换皮肤表示层

3、切换皮肤行为层

$("#colorPick  a").click(function(){
var oldcolor= $.cookie("color"); //获取cookie里存的color
var color=$(this).attr("data-skin"); //获取当前点击的元素的color,为属性data-skin的值
var len=$("#content-main .LRADMS_iframe").length; //获取iframe元素的个数
for(var i=; i<len;i++){
var obj= $("#content-main .LRADMS_iframe")[i].contentDocument.body; //循环获取各iframe里的body
$(obj).removeClass(oldcolor); //该body是修改各iframe里的body的样式
$(obj).addClass(color);
}
$.cookie("color", color); //设置cookie里的值为新值
$("body").removeClass(oldcolor); //该body是自身html里body的样式
$("body").addClass(color);
});

最后就是各颜色对应一套样式体系:

.skin-red .btn-default
{
color:#DD4B39;
}
.skin-yellow .btn-default
{
color:#F39C12;
}
.skin-blue .btn-primary:hover
{
background-color:#007AFF;
border:1px solid #007AFF;
color:#fff;
}

 补充完善:

上面是一层iframe的情况,但是实际项目中还会碰到很多层iframe嵌套的情况,就像下面这样:

$("#colorPick  a").click(function(){
var oldcolor= $.cookie("color");
var color=$(this).attr("data-skin");
var len=$("#content-main .LRADMS_iframe").length;
for(var i=; i<len;i++){
var obj= $("#content-main .LRADMS_iframe")[i].contentDocument.body;
$(obj).removeClass(oldcolor);
$(obj).addClass(color);
} var len2=$(".layui-layer-iframe iframe").length;
for(var j=;j<len2;j++){
var obj= $(".layui-layer-iframe iframe")[j].contentDocument.body;
$(obj).removeClass(oldcolor);
$(obj).addClass(color); var len3=$(".layui-layer-iframe iframe").contents().find("iframe").length;
for(var a=;a<len3;a++){
var obja= $(".layui-layer-iframe iframe").contents().find("iframe")[a].contentDocument.body;
$(obja).removeClass(oldcolor);
$(obja).addClass(color);
}
} $.cookie("color", color);
$("body").removeClass(oldcolor);
$("body").addClass(color); });

标红处为iframe嵌套时寻找下级iframe的方法

此外,如果是在iframe的页面使用 $.cookie() 方法是会报错$.cookie() is not a function的错误,原因是cookie在window下才有;

因此在iframe的页面需要使用 top.$.cookie() 才会获取到cookie值

//iframe页面使用top.$.cookie()
window.onload = function(){
var color = top.$.cookie("color");
$("body").addClass(color);
}

最新文章

  1. QT数据库操作
  2. ASP.NET MVC系列:添加视图
  3. Android Retrofit网络请求Service,@Path、@Query、@QueryMap、@FieldMap (转)
  4. SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
  5. 无法将匿名方法转换为System.Delegate
  6. sdutoj 2607 Mountain Subsequences
  7. SQL server 学习笔记1
  8. [Golang]Go Packages
  9. 开发一个App的成本是多少?
  10. MySQL高可用读写分离方案预研
  11. 使用eclipse生成文档(javadoc)
  12. Python交互模式下方向键出现乱码
  13. 单选按钮(RadioButton)与复选框(CheckBox)的功能与用法
  14. 面试经验合集-Java后端&lt;一&gt;
  15. MySQL系列详解五: xtrabackup实现完全备份及增量备份详解-技术流ken
  16. python 控制语句基础----&gt;代码块:以为冒号作为开始,用缩进来划分作用域,代表一个整体,是一个代码块,一个文件(模块)也称为一个代码块 | 作用域:作用的范围
  17. Mysql INSERT、REPLACE、UPDATE的区别
  18. uniGUI试用笔记(五)
  19. day23-python操作数据库三
  20. 05_ssm基础(四)之Spring与持久层的整合

热门文章

  1. 1022 Digital Library (30)(30 point(s))
  2. Sass 和 SCSS 有什么区别?
  3. android studio 添加有趣的注释模板 佛祖保佑无bug等
  4. WinlogonHack获取系统密码
  5. vijos 1880 变形最短路
  6. webwork或Struts配置网站根路径的默认页面办法
  7. bzoj 3209 数位DP+欧拉定理
  8. php &lt;a href&gt;&lt;/a&gt;链接地址中是php变量,链接文本也是php变量的代码处理方法
  9. cocos2dx -- 学习笔记
  10. HAproxy和TIME WAIT的一次问题排查