基于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 replace 与replaceall实例用法详解
Aug 03 Javascript
JSP跨iframe如何传递参数实现代码
Sep 21 Javascript
浅谈js 闭包引起的内存泄露问题
Jun 22 Javascript
原生js实现数字字母混合验证码的简单实例
Dec 10 Javascript
AngularJS基础 ng-options 指令详解
Aug 02 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
Nov 03 Javascript
node+experss实现爬取电影天堂爬虫
Nov 20 Javascript
Angular-Touch库用法示例
Dec 22 Javascript
从零学习node.js之模块规范(一)
Feb 21 Javascript
jQuery zTree插件使用简单教程
Aug 16 jQuery
javascript随机变色实例代码
Oct 15 Javascript
JS使用setInterval计时器实现挑战10秒
Nov 08 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
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
深入理解Node module模块
2018/03/26 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
使用pycharm生成代码模板的实例
2018/05/23 Python
python中sys.argv函数精简概括
2018/07/08 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
优秀党支部事迹材料
2014/01/14 职场文书
企业安全生产责任书
2014/04/14 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
2016大一新生军训感言
2015/12/08 职场文书
Python实现批量自动整理文件
2022/03/16 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python