基于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 相关文章推荐
子页向父页传值示例
Nov 27 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
Dec 30 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
如何实现json数据可视化详解
Nov 24 Javascript
基于jQuery实现滚动切换效果
Dec 02 Javascript
bootstrap switch开关组件使用方法详解
Aug 22 Javascript
为输入框加入数字js校验代码分享
Nov 02 Javascript
5分钟学会Vue动画效果(小结)
Jul 21 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 Javascript
详解vue中async-await的使用误区
Dec 05 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
Jan 16 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面向对象编程快速入门
2006/12/14 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PDO::inTransaction讲解
2019/01/28 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
Python中异常重试的解决方案详解
2017/05/05 Python
python简单实现操作Mysql数据库
2018/01/29 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
警校毕业生自我评价
2014/04/06 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
小区推广策划方案
2014/06/06 职场文书
房展策划方案
2014/06/07 职场文书
班级体育活动总结
2014/07/05 职场文书
应用心理学专业求职信
2014/08/04 职场文书
水电维修专业推荐信
2014/09/06 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书