1

我基本上已经编写了评级系统星级评级系统的代码,一切正常,代码很好

<script type="text/javascript">
(function($){

   $(document).ready(function() {
    var $option = $('.option');
    var $fruit = $('.fruit-name');
    var $last;
    var parent
    $option.click(function() {
        parent=$(this).parents('.comment-form-rating');
        $('.fruit-name',parent).val(this.innerHTML)
    })


$(".starr1").hover(function(){
    parent=$(this).parents('.comment-form-rating');
    $('.starr1',parent).css('color','gold')
    },function(){
    $(".starr1").css("color","#ddd");
  });


$(".starr2").hover(function(){
    parent=$(this).parents('.comment-form-rating');
    $('.starr1',parent).css('color','gold')
    $('.starr2',parent).css('color','gold')
    },function(){
    $(".starr1").css("color","#ddd");
    $(".starr2").css("color","#ddd");
  });

$(".starr3").hover(function(){
    parent=$(this).parents('.comment-form-rating');
    $('.starr1',parent).css('color','gold')
    $('.starr2',parent).css('color','gold')
    $('.starr3',parent).css('color','gold')
    },function(){
    $(".starr1").css("color","#ddd");
    $(".starr2").css("color","#ddd");
    $(".starr3").css("color","#ddd");
  });

$(".starr4").hover(function(){
    parent=$(this).parents('.comment-form-rating');
    $('.starr1',parent).css('color','gold')
    $('.starr2',parent).css('color','gold')
    $('.starr3',parent).css('color','gold')
    $('.starr4',parent).css('color','gold')
    },function(){
    $(".starr1").css("color","#ddd");
    $(".starr2").css("color","#ddd");
    $(".starr3").css("color","#ddd");
    $(".starr4").css("color","#ddd");
  });

$(".starr5").hover(function(){
    parent=$(this).parents('.comment-form-rating');
    $('.starr1',parent).css('color','gold')
    $('.starr2',parent).css('color','gold')
    $('.starr3',parent).css('color','gold')
    $('.starr4',parent).css('color','gold')
    $('.starr5',parent).css('color','gold')
    },function(){
    $(".starr1").css("color","#ddd");
    $(".starr2").css("color","#ddd");
    $(".starr3").css("color","#ddd");
    $(".starr4").css("color","#ddd");
    $(".starr5").css("color","#ddd");
  });

});

})(jQuery);
</script>

但是我必须为我的星星定义一个点击功能,当用户点击星星 5 时,所有星星都变成红色——

我是这样定义的

$(".starr5").click(function () {
    parent = $(this).parents('.comment-form-rating');
    $('.starr1', parent).css('color', '#FF7777')
    $('.starr2', parent).css('color', '#FF7777')
    $('.starr3', parent).css('color', '#FF7777')
    $('.starr4', parent).css('color', '#FF7777')
    $('.starr5', parent).css('color', '#FF7777')
}); 

这就是问题发生的地方 - 现在星形变为红色,但在鼠标离开时它们再次变为灰色,鼠标悬停在黄色功能上时开始工作 - 完全困惑如何编写进一步的代码使其工作。

4

2 回答 2

1

我可以想象你在 HTML 中的所有元素和类的混乱......
为了简化你的生活,我编写了一个非常简单的代码:

星级评分演示

这就是你所需要的:

HTML:

<img class="stars" data-rated="4" src="whiteImgWithStarsHoles.png" />

其中 data-rated 是您的服务器返回的值 (1-5)。
创建与背景颜色匹配的图像,创建 5个星形孔并另存为.png

CSS:

.stars{
  cursor:pointer;
  max-width:200px; /* respective to the gray image width */
  background: gold url(grayimage200x100.jpg) no-repeat 0 bottom;
  /* transition: 1s;*/
}
.stars.red{
  background-color: red;
}

jQuery:

$('.stars').each(function(){
  
  var $this = $(this),
      starW = $this.width() / 5,
      rated = 0;
  
  function setRates(){
    rated = $this.data('rated') * starW;
    $this.css({backgroundPosition: rated+'px top'});
  }
  setRates();
  
  $this.on('mousemove', function( e ){
    rated = Math.ceil( (e.clientX-$this.offset().left) / starW );   
    $this.not('.red').css({backgroundPosition: rated*starW +'px top'});
  }).on('mouseleave', setRates).on('click', function(){
    $this.not('.red').data('rated', rated).addClass('red');
    // alert("Send to server: "+   rated   );
  }); 
  
});
于 2013-06-06T13:51:28.423 回答
1

您应该在进入和离开时添加和删除类,所以当

mouseenter

.addClass('gold') 

click

.removeClass('gold').addClass('red');

mouseleave

.removeClass('gold');

你做得很好;快乐编码。

应要求提供 Star1 示例:

   <style type="text/css">
        .gold{color: gold;}
        .red{color: #FF7777;}
        .yourDefaultStarClass{color: #ddd;}
    </style>

    <script type="text/javascript">
    (function($){
        $(".starr1").hover(function(){
        parent=$(this).parents('.comment-form-rating');
        $('.starr1',parent).addClass('gold');
        },function(){
        $(".starr1").removeClass('gold');

        });

        $(".starr5").click(function () {
        parent = $(this).parents('.comment-form-rating');
        $('.starr1', parent).removeClass('gold').addClass('red');
        }); 

    });          
    </script>
于 2013-06-06T12:37:55.827 回答