为什么我的点亮是后一个好用,前一个不好用

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

慕粉4077240

2019-01-25 11:06

<!DOCTYPE html>


<html>


  <head>


    <meta charset="utf-8" />


    <title>星级评分之第一种写法</title>


    <style>


      body, ul, li {


        padding: 0;


        margin: 0;


      }


      li {


        list-style: none;


      }


      .rating {


        width: 250px;


        height: 30px;


        margin: 100px auto;


      }


      .rating-item {


        display: inline-block;


        width: 30px;


        height: 30px;


        background:url(images/xj1.jpg) no-repeat;


        cursor: pointer;


      }


    </style>


    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>


  </head>


    <body>

 <ul class="rating" id="rating1">


      <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>

     <ul class="rating" id="rating3">


      <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>


    <script>

 var rating=(function(){

  // 点亮

      var lightOn = function($item,num) {


        $item.each(function(index) {


          if(index < num) {


            $(this).css('background-position', '0 -30px');


          } else {


            $(this).css('background-position', '0 0');


          }


        });


      };

     var init=function(el,num){

//缓存、jQuery对象与DOM对象


      var $rating = $(el)


          $item = $rating.find('.rating-item');

  

  // 初始化


          lightOn($item,num);


         // 事件绑定


          $rating.on('mouseover','.rating-item',function() {


           console.log($(this).index());


           lightOn($item,$(this).index() + 1);


           }).on('click','.rating-item', function() {


                num = $(this).index() + 1;


              }).on('mouseout', function() {


           lightOn($item,num);


      });

};

return{

init:init

};

})();

rating.init("#rating1",2);

rating.init("#rating2",1);

rating.init("#rating3",3);

    </script>



  </body>


</html>


写回答 关注

2回答

  • 慕UI7829676
    2019-02-22 11:25:43

    找到问题了,给出答案,真的是细节问题:

    var $rating = $(el);//两个var分别申明变量的话,这边是分号

    var $item = $rating.find(".rating-item");

    或者用一个var申明两个变量,就是用逗号

    var $rating = $(el),//逗号

     $item = $rating.find(".rating-item");


    西西家的八戒...

    兄弟牛逼!!!!!

    2019-06-26 15:36:06

    共 1 条回复 >

  • 慕粉4077240
    2019-01-25 11:09:21

    解决了,落个逗号

    慕UI782...

    我也是同样的问题,哪个地方少逗号啊

    2019-02-22 10:57:01

    共 1 条回复 >

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

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

25809 学习 · 109 问题

查看课程

相似问题