基于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 相关文章推荐
js实现简单模态窗口,背景灰显
Nov 14 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
最棒的Angular2表格控件
Aug 10 Javascript
javascript中闭包概念与用法深入理解
Dec 15 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
Feb 21 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
Jul 13 Javascript
深入理解React高阶组件
Sep 28 Javascript
Vue组件通信的四种方式汇总
Feb 08 Javascript
详解解决小程序中webview页面多层history返回问题
Aug 20 Javascript
Node.js学习之内置模块fs用法示例
Jan 22 Javascript
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
基于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
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
php共享内存段示例分享
2014/01/20 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python之生产者消费者模型实现详解
2019/07/27 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
生日寿宴答谢词
2014/01/19 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL