基于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 相关文章推荐
jQuery 使用个人心得
Feb 26 Javascript
IE下使用cloneNode注意事项分享
Nov 22 Javascript
火狐下table中创建form导致两个table之间出现空白
Sep 02 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
AngularJS入门教程引导程序
Aug 18 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
prototype与__proto__区别详细介绍
Jan 09 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
Mar 07 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
input 标签实现输入框带提示文字效果(两种方法)
Oct 09 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
Mar 02 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 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 操作文件的一些FAQ总结
2009/02/12 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python-接口开发入门解析
2019/08/01 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
python实现图片插入文字
2019/11/26 Python
opencv+python实现均值滤波
2020/02/19 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
python 实现的车牌识别项目
2021/01/25 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
新东网科技Java笔试题
2012/07/13 面试题
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
自我反省检讨书
2014/01/23 职场文书
网络优化专员求职信
2014/05/04 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
股权投资协议书
2016/03/23 职场文书
python 实现定时任务的四种方式
2021/04/01 Python