基于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 相关文章推荐
从javascript语言本身谈项目实战
Dec 27 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 Javascript
使用js如何实现全选与全不选
Dec 30 Javascript
jquery live()重复绑定的解决方法介绍
Jan 03 Javascript
javascript的tab切换原理与效果实现方法
Jan 10 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 Javascript
jQuery动态移除和添加背景图片的方法详解
Mar 07 Javascript
Vue+axios 实现http拦截及路由拦截实例
Apr 25 Javascript
bootstrap模态框远程示例代码分享
May 22 Javascript
vue使用中的内存泄漏【推荐】
Jul 10 Javascript
详解vue项目中调用百度地图API使用方法
Apr 25 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
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
循环 vs 递归浅谈
2013/02/28 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
pycharm 使用心得(三)Hello world!
2014/06/05 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
python中scikit-learn机器代码实例
2018/08/05 Python
Python字典dict常用方法函数实例
2020/11/09 Python
韩国现代百货官网:Hmall
2018/03/21 全球购物
小学美术教学反思
2014/02/01 职场文书
洗发水广告词
2014/03/13 职场文书
真诚的求职信
2014/07/04 职场文书
党员评议个人总结
2014/10/20 职场文书
个人简历求职信范文
2015/03/20 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
MySQL Shell的介绍以及安装
2021/04/24 MySQL
go语言中http超时引发的事故解决
2021/06/02 Golang
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
MySql数据库触发器使用教程
2022/06/01 MySQL