基于jQuery的星级评分插件


Posted in Javascript onAugust 12, 2011

首先看一下运行效果如下图所示。

基于jQuery的星级评分插件

    鼠标移到星星上该星星前面的所有星星全部变亮,鼠标单击将记录点击的星星数,前面的所有星星将变亮。
一、原理
本程序的原理是这样的:一个“ul”标签,该标签的背景为灰色的星星,控制“ul”标签的宽度显示星星的数量。例如:一个星星图片的宽度为23px,那么要显示10个星星,则“ul”的宽度为230px就可以显示10个星星。
n个“li”标签,n表示您要显示星星的个数,例如你要显示10个星星那么将有10个“li”标签。那么这10个标签的宽度分别为1个星星的宽度23px,2个星星的宽度46px,......,10个星星的宽度230px。这些“li”标签的背景将为蓝色的星星。
则另外还有一个“li”标签记录鼠标单击的星星或初始设置。
这些标签都是重叠在一起的,通过鼠标滑动效果切换这些标签的层叠顺序,显示不同的星星数量,单击记录星星个数。
二、源码

$.fn.studyplay_star=function(options,callback){ 
//默认设置 
var settings ={ 
MaxStar :20, 
StarWidth :23, 
CurrentStar :5, 
Enabled :true 
}; 
if(options) { jQuery.extend(settings, options); }; 
var container = jQuery(this); 
container.css({"position":"relative"}) 
.html('<ul class="studyplay_starBg"></ul>') 
.find('.studyplay_starBg').width(settings.MaxStar*settings.StarWidth) 
.html('<li class="studyplay_starovering" style="width:'+settings.CurrentStar*settings.StarWidth+'px; z-index:0;" id="studyplay_current"></li>'); 
if(settings.Enabled) 
{ 
var ListArray = ""; 
for(k=1;k<settings.MaxStar+1;k++) 
{ 
ListArray +='<li class="studyplay_starON" style="width:'+settings.StarWidth*k+'px;z-index:'+(settings.MaxStar-k+1)+';"></li>'; 
} 
container.find('.studyplay_starBg').append(ListArray) 
.find('.studyplay_starON').hover(function(){ 
$("#studyplay_current").hide(); 
$(this).removeClass('studyplay_starON').addClass("studyplay_starovering"); 
}, 
function(){ 
$(this).removeClass('studyplay_starovering').addClass("studyplay_starON"); 
$("#studyplay_current").show(); 
}) 
.click(function(){ 
var studyplay_count = settings.MaxStar - $(this).css("z-index")+1; 
$("#studyplay_current").width(studyplay_count*settings.StarWidth) 
//回调函数 
if (typeof callback == 'function') { 
callback(studyplay_count); 
return ; 
} 
}) 
} 
}

这个插件有两个参数一个是options表示插件的一些基本设置;callback表示回调函数,该函数存在一个参数表示用户选择的星星数量。
三、使用
如果我们想在id为“z”的div上显示5个星星,默认有一颗星星选中,弹出选择星星的个数对话框,就可以如下编写代码:
<div id="z"></div> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("#z").studyplay_star({MaxStar:5,CurrentStar:2},function(value){alert(value)}); 
}); 
</script>

如果想显示评分结果 可以把Enabled设置false就ok了
四、代码下载

经网友反映说火狐下面存在这问题,今天进行了调试进行了修改 主要是因为样式中li标签没有定义高度引起的,现在已经修正,谢谢朋友们。火狐修正版下载地址:
star2.rar 
真心的谢谢网友们
第三次修改:添加0.5分评分功能
使用说明:其中half等于0表示一分一分的增加,1表示0.5的增加
例如:$("#z").studyplay_star({MaxStar:12,CurrentStar:2,Enabled:true,Half:1},function(value){alert(value)});
下载地址:halfstar2.rar

Javascript 相关文章推荐
禁止JQuery中的load方法装载IE缓存中文件的方法
Sep 11 Javascript
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
js控制淡入淡出示例代码
Nov 12 Javascript
一个实用的图片切换支持点击切换和自动轮播
Sep 09 Javascript
详解javascript函数的参数
Nov 10 Javascript
学习使用jquery iScroll.js移动端滚动条插件
Mar 24 Javascript
js时间戳与日期格式之间相互转换
Dec 11 Javascript
three.js实现炫酷的全景3D重力感应
Dec 30 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
JS常见内存泄漏及解决方案解析
May 30 Javascript
原生js滑动轮播封装
Jul 31 Javascript
基于jQuery的投票系统显示结果插件
Aug 12 #Javascript
JavaScript中的View-Model使用介绍
Aug 11 #Javascript
仿jQuery的siblings效果的js代码
Aug 09 #Javascript
html中table数据排序的js代码
Aug 09 #Javascript
最常用的12种设计模式小结
Aug 09 #Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
Aug 09 #Javascript
javascript 主动派发事件总结
Aug 09 #Javascript
You might like
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
php curl_init函数用法
2014/01/31 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
利用python为运维人员写一个监控脚本
2018/03/25 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
护理专业自我鉴定
2014/01/30 职场文书
成绩单公证书
2014/04/10 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
孔子观后感
2015/06/08 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
交通安全教育主题班会
2015/08/12 职场文书
python 批量压缩图片的脚本
2021/06/02 Python