基于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 异步调用框架 (Part 3 - 代码实现)
Aug 04 Javascript
查看图片(前进后退)功能实现js代码
Apr 24 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
Mar 19 Javascript
Backbone.js的一些使用技巧
Jul 01 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
Javascript将数字转化成为货币格式字符串
Jun 22 Javascript
原生js中ajax访问的实例详解
Sep 19 Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
Jul 06 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 MPDF中文乱码的解决方式
2015/12/08 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
jquery之Document元素选择器篇
2008/08/14 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
jquery each()源代码
2011/02/14 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
微信小程序音乐播放器开发
2019/11/20 Javascript
js实现左右轮播图
2020/01/09 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python实现的登录和操作开心网脚本分享
2014/07/09 Python
Python中super关键字用法实例分析
2015/05/28 Python
python 调用HBase的简单实例
2016/12/18 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
高中美术教学反思
2014/01/19 职场文书
研究生毕业鉴定
2014/01/29 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
小学生优秀评语
2014/12/29 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
Mysql开启外网访问
2022/05/15 MySQL