jquery实现星级评分效果

效果图如下:
在这里插入图片描述在这里插入图片描述
html:

<ul id="rating" class="rating">
        <li class="rating-item rating" title="很不好"></li>
        <li class="rating-item rating" title="不好"></li>
        <li class="rating-item rating" title="一般"></li>
        <li class="rating-item rating" title="好"></li>
        <li class="rating-item rating" title="很好"></li>
</ul>
    <ul id="titleText"></ul> //描述文本

css:

   *{
        margin: 0;
        padding: 0;
    }
    li{
        list-style: none;
    }
    .rating{
        height: 26px;
    }
    .rating-item{
        float: left;
        width: 30px;
        height: 30px;
        cursor: pointer;
        background:url(images/rating1.svg) no-repeat;
        background-size:30px;
    }
    .rating-itemYellow{
        float: left;
        width: 30px;
        height: 30px;
        cursor: pointer;
        background:url(images/rating2.svg) no-repeat;
        background-size:30px;
    }

js:

 // 点亮方法
    var rating = (function(){
        var lightOn = function($item,num){
            $item.each(function(index){
                if(index<num){
                    $(this).removeClass('rating-item').addClass('rating-itemYellow')
                }else{
                    $(this).addClass('rating-item').removeClass('rating-itemYellow')
                }
            });
        }
        var init= function(el,num){
            var titleText = "";
            var $rating = $(el),
            $item = $rating.find('.rating');
            // 初始化
            lightOn($item,num);
            // 鼠标移入事件,点击事件,鼠标移出事件
            $rating.on('mouseover','.rating',function(){
                lightOn($item,$(this).index()+1);
                var titleText = $(this).attr('title')
                $('#titleText').text(titleText)
            }).on('click','.rating',function(){
                num = $(this).index()+1;
                titleText = $(this).attr('title')
                $('#titleText').text(titleText) //点击星号后显示对应的文本 
            }).on('mouseout',function(){
                lightOn($item,num);
                $('#titleText').text(titleText)
            });

        };
        $.fn.extend({
            rating:function(num){
                return this.each(function(){
                    init(this,num);
                });
            }
        });
        // 返回一个对象
        return {
            init:init
        };
    })();
// 初始化星号,全部未点亮
    rating.init('#rating',0);

欢迎各位指导交流!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值