基于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数组Array sort方法使用深入分析
Feb 21 Javascript
javascript显示用户停留时间的简单实例
Aug 05 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
Javascript 闭包详解及实例代码
Nov 30 Javascript
jQuery实现给input绑定回车事件的方法
Feb 09 Javascript
js实现本地时间同步功能
Aug 26 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
Aug 31 Javascript
vue init webpack 建vue项目报错的解决方法
Sep 29 Javascript
ES6数组与对象的解构赋值详解
Jun 14 Javascript
js实现盒子滚动动画效果
Aug 09 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
对Django中内置的User模型实例详解
2019/08/16 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
班长岗位职责
2013/11/10 职场文书
毕业生实习鉴定
2013/12/11 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
大学军训决心书
2015/02/05 职场文书
北京导游词
2015/02/12 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
Python基础之Socket通信原理
2021/04/22 Python
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python