最近的项目中有一个星级评分的需求,  自己就写了一下, 由于可能一个页面要用到多个,就采用了面向对象的写法。

  用到的png图片也放到这里。   

  js要用到jquery。

css:

  

.sr-star{
display: flex;
margin-bottom:50px;
}
.sr-star-item{
width:18px;
height:18px;
background:url("./img/empty.png") no-repeat;
background-size:18px 18px;
margin-right:8px;
cursor: pointer;
}
.str-star-item.active{
background-image: url("./img/full.png");
}

js:

$(function () {

        function SrScore(el) {
this.$el = $(el);
this.init();
this.$items = this.$el.find('.sr-star-item');
} SrScore.prototype.init = function () {
var str = '';
for (var i = 0 ;i < 5; i++) {
str += '<div class="sr-star-item"></div>'
}
this.$el.append(str);
this.$bindEvent();
};
SrScore.prototype.$bindEvent = function () {
var that = this;
this.$el.on('click', '.sr-star-item', function () {
that.onScore($(this).index());
})
};
SrScore.prototype.onScore = function (n) {
this.$items.each(function (index) {
var $this = $(this);
if (index <= n) {
$this.addClass('active');
} else {
$this.removeClass('active');
}
})
};
window.SrStore = SrScore;
})

由于我这里的需求只有点击哪个,就点亮那些。 所以事件里面就只写了一个click, 如果有鼠标移入到哪个上就点亮的需求, 可以加上mouseover和mouseout事件,在构造函数中加一个属性index:this.index = 0, mouseover的时候,

that.onScore($(this).index()), click的时候, 将this.index = $(this).index(), mouseout的时候,that.onScore(that.index);

调用:

   new SrScore(el);

如果页面中多个同样类名的都要加这个, 可以先遍历类名,然后将每个this放入其中

$('.sr-star').each(function () {
new SrScore($(this));
})

js 实现星级评分的更多相关文章

  1. js实现星级评分效果(非常规5个li代码)

    1. 前言 此方案受到JS单行写一个评级组件启发,自己写了一个简单Demo. 功能有正常滑动,动态显示实心星星个数:当点击确认,则保持当前的实心星星个数:再移动时未点击,则离开后还是保持之前的状态. ...

  2. js实现星级评分之方法一

    利用一个星级评分的小案例,来逐步封装js星级评分插件. 从最基础的js知识,通过一个小的demo,逐步学习js的面向对象知识. 从浅到深,逐步递进. 图片素材 <!DOCTYPE html> ...

  3. 原生JS实现-星级评分系统

    今天我又写了个很酷的实例:星级评分系统(可自定义星星个数.显示信息) sufuStar.star();使用默认值5个星星,默认信息 var msg = [........]; sufuStar.sta ...

  4. JS实现星级评分

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. js css 点亮 星级评分

    利用css 和 js 实现星级评分 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  6. 原生javascript星级评分

    写个最简单的原生js的星级评分: <div id="rank" class="pingfen"> <ul> <li>< ...

  7. js星级评分点击星级评论打分效果

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

  8. js星级评分点击星级评论打分效果--收藏--转载

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

  9. javascript星级评分(多个)

    JS打多个类型星级评分: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

随机推荐

  1. 利用NotePad++ 格式化代码(格式标准化) worldsing

    在阅读别人的代码时往往会遇到格式很乱,阅读起来很费劲,如果手动改很容易出错,而且很费时间,这时可以借助一些专业的编辑器来格式化代码,NotePad++是一个轻量级的代码编辑器,占用内存少,运行速度快, ...

  2. Mysql索引会失效的几种情况分析(转)

    出处:http://www.jb51.net/article/50649.htm 索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: 1.如果条件中有or,即使其中有条件带索引也不会使用(这 ...

  3. serialVersionUID的作用以及IDEA、Eclipse如何自动生成serialVersionUID

    说到serialVersionUID,首先要讲讲序列化. 序列化: 序列化可以将一个java对象以二进制流的方式在网络中传输并且可以被持久化到数据库.文件系统中,反序列化则是可以把之前持久化在数据库或 ...

  4. 图解利用Word来发布博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  5. WCF Service 配置文件注释(转)

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.S ...

  6. Image 和byte[]之间的转换

    1.Image 转 byte[] public byte[] GetByteByImage(Image image) { byte[] bt = null; try { if (!image.Equa ...

  7. EventBus事件总线框架(发布者/订阅者模式,观察者模式)

    一. android应用内消息传递的方式: 1. handler方式-----------------不同线程间传递消息. 2. Interface接口回调方式-------任意两个对象. 3. In ...

  8. 【C++】C++中的操作符重载

    C++中的操作符重载使得对于类对象的操作更加方便和直观,但是对于各种操作符重载的规则以及语法形式,一直以来都是用到哪一个上stackoverflow上查找,在查找了四五次之后,觉得每次麻烦小总结一下. ...

  9. Mysql报Packet for query is too large (1040 > 1024)错误

    Linux下mysql 报Packet for query is too large (1040 > 1024)错误的解决方法 项目之前一直正常运行,这几天突然一直提示查询出错,看了下日志发现提 ...

  10. [Erlang31]Erlang trace总结

    在一个并行的世界里面,我们很难做到单步断点调试来定位问题(太多的消息飞来飞去),Erlang设计者也深刻体会到这一点,推出了另一个trace机制. 通过这个trace,你可以: .特定进程集内的函数调 ...