效果

css

.star ul,
.star li {
list-style: none;
} .star {
position: relative;
width: 600px;
height: 24px;
margin: 20px auto 0;
} .star span {
float: left;
height: 19px;
line-height: 19px;
} .star ul {
margin: 0 10px;
} .star li {
float: left;
width: 24px;
height: 22px;
text-indent: -9999px;
background: url('../img/star.png') no-repeat;
cursor: pointer;
} .star li.on {
background-position: 0 -28px;
} .star p {
padding: 10px 10px 0;
position: absolute;
top: 20px;
width: 159px;
height: 60px;
z-index: 100;
} .star p em {
color: #FF6600;
display: block;
font-style: normal;
} .star strong {
color: #ff6600;
padding-left: 10px;
} .hidden {
display: none;
}

html

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>jQuery实现五星级评分</title>
<link rel="stylesheet" href="./css/score.css">
<script type="text/javascript" src="./js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./js/score.js"></script> </head>
<body>
<div class="star" id="goods">
<span>商品</span>
<input type="hidden" class="value-container" name="goods" value="">
<ul>
<li><a href="javascript:;">1</a></li>
<li><a href="javascript:;">2</a></li>
<li><a href="javascript:;">3</a></li>
<li><a href="javascript:;">4</a></li>
<li><a href="javascript:;">5</a></li>
</ul>
</div> <div class="star" id="logistics">
<span>物流</span>
<input type="hidden" class="value-container" name="logistics" value="">
<ul>
<li><a href="javascript:;">1</a></li>
<li><a href="javascript:;">2</a></li>
<li><a href="javascript:;">3</a></li>
<li><a href="javascript:;">4</a></li>
<li><a href="javascript:;">5</a></li>
</ul>
</div>
<script type="text/javascript">
$(function() {
var goods_score = new Score({selector:'#goods.star'});
var logistics_score = new Score({selector:'#logistics.star'});
});
</script>
</body>
</html>

js

function Score(options) { // 定义一个类
this.config = {
selector: '.star', // 评分容器
renderCallback: null, // 渲染页面后回调
callback: null // 点击评分回调
}; this.cache = {
iStar: 0,
iScore: 0
}; this.init(options); // 构造函数
} Score.prototype = {
constructor: Score,
init: function(options) {
this.config = $.extend(this.config, options || {});
var self = this,
_config = self.config,
_cache = self.cache; self._renderHTML();
},
_renderHTML: function() {
var self = this,
_config = self.config;
var html = '<span class="desc"></span>' +
'<p class="star-p hidden"></p>';
$(_config.selector).each(function(index, item) {
$(item).append(html);
$(item).wrap($('<div class="parentCls" style="position:relative"></div>'));
var parentCls = $(item).closest('.parentCls');
self._bindEnv(parentCls); // 方法层层相扣
_config.renderCallback && $.isFunction(_config.renderCallback) && _config.renderCallback();
}); },
_bindEnv: function(parentCls) {
var self = this,
_config = self.config,
_cache = self.cache; $(_config.selector + ' li', parentCls).each(function(index, item) { // 鼠标移上
$(item).mouseover(function(e) {
var offsetLeft = $('ul', parentCls)[0].offsetLeft;
ismax(index + 1); $('p', parentCls).hasClass('hidden') && $('p', parentCls).removeClass('hidden');
$('p', parentCls).css({
'left': index * $(this).width() + 12 + 'px'
});
}); // 鼠标移出
$(item).mouseout(function() {
ismax();
!$('p', parentCls).hasClass('hidden') && $('p', parentCls).addClass('hidden');
}); // 鼠标点击
$(item).click(function(e) {
var index = $(_config.selector + ' li', parentCls).index($(this));
_cache.iStar = index + 1; var score = index + 1; !$('p', parentCls).hasClass('hidden') && $('p', parentCls).addClass('hidden');
var html = '<strong>' +
score +
'分</strong>'; $('.desc', parentCls).html(html); // 加入分数
$(this).parents(_config.selector).find('.value-container').val(score);
// $(_config.selector).find('.value-container').val(score); _config.callback && $.isFunction(_config.callback) && _config.callback({
starAmount: _cache.iStar
}); // 回调函数
}); }); function ismax(iArg) {
_cache.iScore = iArg || _cache.iStar;
var lis = $(_config.selector + ' li', parentCls); for (var i = 0; i < lis.length; i++) {
lis[i].className = i < _cache.iScore ? "on" : "";
}
}
}
};

这里有两种方式

1.针对所有的.star的

2.针对具体的.star的

$(function() {
//var score = new Score(); // 不传参数,默认是.star
var goods_score = new Score({selector:'#goods.star'}); // 传参数,只针对id为goods的.star
var logistics_score = new Score({selector:'#logistics.star'});
});

下载

jQuery动态五星评分的更多相关文章

  1. jQuery动态星级评分效果实现方法

    本文实例讲述了jQuery动态星级评分效果实现方法.分享给大家供大家参考.具体如下: 这里的jQuery星级评分代码,是大家都很喜欢的功能,目前广泛应用,本星级评分加入了动画效果,注意,如果要真正实现 ...

  2. 利用jquery实现电商网站常用特效之:五星评分

    这篇文章主要为大家详细介绍了基于jquery实现五星好评,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在电商网站,我们经常会用到五星评分的功能,现在用jQuery实现一个简单的demo: 1.引 ...

  3. 五星评分效果 原生js

    五星评分在很多地方都可以用到,网上也有插件或者相应的代码,在这里我给大家提供一款我自己写的超级简单实用的五星评分代码,连图片都不需要 <!-- 评分start --> <ul> ...

  4. IE7中使用Jquery动态操作name问题

    问题:IE7中无法使用Jquery动态操作页面元素的name属性. 在项目中有出现问题,某些客户的机器偶尔会有,后台取不到前台的数据值. 然开发和测试环境总是不能重现问题.坑爹之处就在于此,不能重现就 ...

  5. jquery动态改变div宽度和高度

    效果体验:http://keleyi.com/keleyi/phtml/jquery/23.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD X ...

  6. jQuery动态增删改查表格信息,可左键/右键提示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 给Jquery动态添加的元素添加事件

    给Jquery动态添加的元素添加事件 来源:[http://wangqixia.diandian.com/post/2011-05-10/6597866] 我想很多人都会向我一样曾经 被新元素的事件绑 ...

  8. Jquery动态在td中添加checkbox

    如图:想要在这个id为headId的<td>中,用jquery动态添加checkbox 代码如下 : data是我用ajax 从后台获取的数据,里面含有若干个user类,我想把所有的人名字 ...

  9. jQuery动态提示消息框效果

    效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/2.htm 原文:http://keleyi.com/a/bjac/hxv86dyi.htm <!DOC ...

随机推荐

  1. ueditor 添加微软雅黑字体 异常“从客户端中检测到有潜在危险的 request.form值”,解决

    使用ueditor往数据库添加文本内容时,如果字体有css样式, <,>," 这些字符会导致报出异常信息:从客户端中检测到有潜在危险的 request.form值 因为这些字符有 ...

  2. JS 时间格式化函数

    //时间格式化函数 Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, ...

  3. NFC简介

    NFC简介 NFC是Near Field Communication缩写,即近距离无线通讯技术.由飞利浦和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备.消费类电子产品.PC 和 ...

  4. SQL For Xml

    最近遇到点棘手的问题,大致如下: 1.数据局格式: 企业名称 排口名称 监测时间  监测因子 a b c    pH值 a b c   氨氮 a b c    化学需氧量(COD) 企业名称.排口名称 ...

  5. delphi 功能函数大全-备份用

    function CheckTask(ExeFileName: string): Boolean;constPROCESS_TERMINATE=$0001;varContinueLoop: BOOL; ...

  6. GET请求和POST请求

    A:有哪些get请求呢? a.在浏览器地址栏直接输入一个请求地址 b.点击超链接 c.表单默认的提交方式method="GET/get" B:get请求方式的特点 a.会将请求参数 ...

  7. React学习笔记(一) 基础知识

    现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我. React的基 ...

  8. 【原创】CMD常用命令:解决实际问题

    1.查找某一目录下后缀名文某某的所有文件. 命令格式:dir *.mp3 /a -d/b/s >C:\Users\leemo\Desktop\total.txt MP3为文件后缀名.>是命 ...

  9. Jquery Mobile下设置radio控件选中

    问题: .html文件头部引入了: <script src="js/jquery.js"></script> <script src="js ...

  10. [转] 小tip: 使用CSS将图片转换成黑白(灰色、置灰) ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2547 //zxx: ...