基于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控件的相对独立性
Sep 03 Javascript
JavaScript格式化数字的函数代码
Nov 30 Javascript
你需要知道的10个最佳javascript开发实践小结
Apr 15 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
javascript常用代码段搜集
Dec 04 Javascript
js实现鼠标经过表格行变色的方法
May 12 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
Sep 14 Javascript
javascript中undefined的本质解析
Jul 31 Javascript
微信小程序实现一张或多张图片上传(云开发)
Sep 25 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
Jul 13 Javascript
JavaScript undefined及null区别实例解析
Jul 21 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 5.0 Pear安装方法
2006/12/06 PHP
source.php查看源文件
2006/12/09 PHP
PHP中PDO的错误处理
2011/09/04 PHP
smarty自定义函数用法示例
2016/05/20 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
python解析xml文件实例分析
2015/05/27 Python
详解python3百度指数抓取实例
2016/12/12 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
flask实现验证码并验证功能
2019/12/05 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
为自己工作观后感
2015/06/11 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
Java基础-封装和继承
2021/07/02 Java/Android