代码这样写有问题吗,不出效果

来源:3-4 改进代码--JS第二次尝试

大白宝宝

2018-04-23 18:37

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>星级评分--第一种实现方式</title>
    <script src="jquery.min.js"></script>
    <style>
 body,ul,li{
            padding:0;
 margin:0;
 }
        li{
            list-style-type:none;
 }
        .rating{
            width:175px;
 height:35px;
 margin:100px auto;
 }
        .rating-item{
            float:left;
 width:35px;
 height:35px;
 background:url(image/01.jpg) no-repeat;
 cursor:pointer;
 }
    </style>
    <script>
 var rating=(function() {
            var lightOn = function ($item,num) {
                $item.each(function (index) {
                    if (index < num) {
                        $(this).css('background-position', '0 -36px');
 } else {
                        $(this).css('background-position', '0 0');
 }
                });
 };
 var init = function (el, num) {
                var $rating = $(el);
 $item = $rating.find('rating-item');

 lightOn($item, num);
 $rating.on('mouseover', 'rating-item', function () {
                    lightOn($(this).index() + 1);
 }).on('click', 'rating-item', function () {
                    num = $(this).index() + 1;
 }).on('mouseout', function () {
                    lightOn(num);
 });
 };
 $.fn.extend({
                rating:function(num){
                    return this.each(function(){
                        init(this,num);
 });
 }
            });
 return {
                init: init
 };
 })();
 rating.init('#rating',2);
//        rating.init('#rating2',3)
 $('#rating2').rating(4);
 </script>
</head>
<body>
<ul class="rating" id="rating">
    <li class="rating-item" title="很不好"></li>
    <li class="rating-item" title="不好"></li>
    <li class="rating-item" title="一般"></li>
    <li class="rating-item" title="好"></li>
    <li class="rating-item" title="很好"></li>
</ul>
<ul class="rating" id="rating2">
    <li class="rating-item" title="很不好"></li>
    <li class="rating-item" title="不好"></li>
    <li class="rating-item" title="一般"></li>
    <li class="rating-item" title="好"></li>
    <li class="rating-item" title="很好"></li>
</ul>
</body>
</html>


写回答 关注

2回答

  • tigertopone
    2018-04-24 17:26:00
    已采纳

    $item = $rating.find('rating-item');
    这个语句也要改成:$item = $rating.find('.rating-item');

  • tigertopone
    2018-04-24 17:22:47

    事件委托绑定$rating.on('mouseover', 'rating-item',内,应该是 '.rating-item'。

    丶明灯三千

    感谢,我也是这里写漏了

    2019-02-12 21:58:53

    共 2 条回复 >

星级评分原理和实现(上)

本课程主要讲解如何使用不同的方式来实现星级评分的效果.

25809 学习 · 109 问题

查看课程

相似问题