jQuery无刷新切换主题皮肤实例讲解

 更新时间:2015年10月21日 17:09:24   投稿:lijiao  
这篇文章主要内容是jQuery无刷新切换主题皮肤实例讲解,本文应用cookie记录用户所选择设置的主题皮肤样式,需要了解的朋友可以参考下

主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格,增强了用户体验。本文将围绕如何使用jQuery实现点击无刷新切换主题皮肤功能。

实现该功能的原理就是通过点击定义的主题样式,改变页面当前引用的主题CSS文件,并且将当前的主题样式写入cookie中或者写入数据库中,以便下次该用户重新访问页面时,调用的就是上次设置好的主题样式。
准备主题皮肤样式
首先,我准备了三个样式表CSS文件,分别是三种风格的主题皮肤,将其引入页面,放置在页面的<head>之间。

<link title="default" rel="stylesheet" type="text/css" href="css/default.css" /> 
<link title="blue" rel="stylesheet" type="text/css" href="css/blue.css" disabled="disabled" /> 
<link title="brown" rel="stylesheet" type="text/css" href="css/brown.css" disabled="disabled" /> 

注意我给每个<link>添加了title属性,是由用处的,另外我禁用了第2个和第3个CSS文件,就是默认起作用的是第1个CSS文件。
XHTML

<ul id="styles"> 
 <li id="default">经典</li> 
 <li id="blue">淡蓝</li> 
 <li id="brown">棕色</li> 
</ul> 

三种主题风格用于点击切换,注意我分别给每个li加了id属性。
CSS

ul#styles{margin-top:10px} 
ul#styles li{float:left; width:50px; height:40px; line-height:40px; padding:2px; 
margin-left:10px; border:1px solid #fff; text-align:center; color:#fff; cursor:pointer} 
ul#styles li.cur{border:1px solid #369; background-image:url(images/selected.gif); 
background-repeat:no-repeat; background-position:4px 32px} 
ul#styles li#default{background-color:#162934;} 
ul#styles li#blue{background-color:#90c5e7} 
ul#styles li#brown{background-color:#601f00} 

用CSS渲染XHTML,其中ul#styles li.cur是指当前主题选中下的样式,我用一个小勾表示当前选中的主题。
jQeury
首先我们要引入jquery库和jquery.cookie插件。jquery.cookie插件为jQuery提供了强大的cookie操作功能,你不用去写复杂的原生的javascript,只管直接调用该插件就行。关于该插件的使用,请阅读本站文章:

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery.cookie.js"></script> 

接下来,当用户点击切换选择主题时,要发生以下动作:获取选择的主题(id),查看引用的CSS文件,如果发现其title属性值正好与当前选中的主题id值相等,则应用该主题CSS文件,同时将其他引用的CSS文件禁用,并且将当前选中的主题写入cookie中,设置cookie过期时间,最后将当前选中的主题按钮(li)设置为当前选中状态。具体看下面的代码:

$("#styles li").click(function(){ 
 var style = $(this).attr("id"); 
 $("link[title='"+style+"']").removeAttr("disabled"); 
 $("link[title!='"+style+"']").attr("disabled","disabled"); 
 $.cookie("mystyle",style,{expires:30}); 
 $(this).addClass("cur").siblings().removeClass("cur"); 
}); 

注意,在本例中我将选中的样式保存在用户cookie中,cookie名称为”mystyle“,值为当前选中的主题值,过去时间为30天,即:expires:30
接着需要做的是页面载入时,读取主题cookie值,如果主题cookie存在则调用cookie值对应的主题样式CSS文件,并且设置当前主题按钮状态为选中状态,反之,则调用默认样式。代码如下:

var cookie_style = $.cookie("mystyle"); 
if(cookie_style==null){ 
 $("link[title='default']").removeAttr("disabled"); 
 $("#styles li#default").addClass("cur"); 
}else{ 
 $("link[title='"+cookie_style+"']").removeAttr("disabled"); 
 $("#styles li[id='"+cookie_style+"']").addClass("cur"); 
 $("link[title!='"+cookie_style+"']").attr("disabled","disabled"); 
} 

将以上两段代码加入到$(function(){})中,工作到此完成。
值得一提的是,本文应用的cookie记录用户所选择设置的主题皮肤样式,但是当cookie到期或者用户清除了浏览器的COOKIE,亦或者用户换用其他浏览器浏览时,当前设置的主题就会失效。为了让用户永久保存选择的主题样式,必须将所选的主题与用户信息对应,并写入数据库,下次该用户登录就可以直接读取主题,当然,该方法应用在有用户权限范围的系统,如后台管理系统,个人中心等。

以上就是本文的全部内容,内容很详细,方便读者理解阅读,希望大家能有所收获吧!

相关文章

  • jQuery Dialog 打开时自动聚焦的解决方法(两种方法)

    jQuery Dialog 打开时自动聚焦的解决方法(两种方法)

    这篇文章主要介绍了jQuery Dialog 打开时自动聚焦的解决方法,及jquery dialog打开时,自动聚焦在第一个控件上的方法,对jquery dialog相关知识感兴趣的朋友通过本文一起学习吧
    2016-11-11
  • jQuery进阶实践之利用最优雅的方式如何写ajax请求

    jQuery进阶实践之利用最优雅的方式如何写ajax请求

    ajax请求相信对大家来说都不陌生,下面这篇文章主要介绍了jQuery进阶实践之利用最优雅的方式如何写ajax请求的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12
  • Jquery异步请求数据实例代码

    Jquery异步请求数据实例代码

    Jquery异步请求数据实例代码,需要的朋友可以参考下。
    2011-12-12
  • 使用jquery组件qrcode生成二维码及应用指南

    使用jquery组件qrcode生成二维码及应用指南

    这篇文章主要介绍了使用jquery组件qrcode生成二维码及应用指南,非常全面实用,需要的朋友可以参考下
    2015-02-02
  • jQuery实现影院选座订座效果

    jQuery实现影院选座订座效果

    这篇文章主要为大家详细介绍了jQuery实现影院选座订座效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • jQuery制作简单柱状图实例

    jQuery制作简单柱状图实例

    这篇文章主要介绍了jQuery制作简单柱状图的方法,实例分析了html与css布局以及jQuery功能的具体实现方法,需要的朋友可以参考下
    2015-01-01
  • Jquery从头学起第四讲 jquery入门教程

    Jquery从头学起第四讲 jquery入门教程

    今天主要讲如何给主要的控件赋值,因为在做网站的时候,很多时候需要初始化表单,所有给控件赋值就成必然的了。
    2010-08-08
  • jQuery ajax动态生成table功能示例

    jQuery ajax动态生成table功能示例

    这篇文章主要介绍了jQuery ajax动态生成table功能,结合具体实例形式分析了jQuery基于ajax数据交互动态创建table表格的相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • 浅谈jquery中的each方法$.each、this.each、$.fn.each

    浅谈jquery中的each方法$.each、this.each、$.fn.each

    下面小编就为大家带来一篇浅谈jquery中的each方法$.each、this.each、$.fn.each。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • jquery中绑定事件的异同

    jquery中绑定事件的异同

    本文主要介绍了jquery中bind(),live(),delegate(),on()绑定事件的不同点和相同点,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论