jquery - 星级评分 jquery 不适用于多个实例

标签 jquery css twitter-bootstrap-3

我使用了这个 https://codepen.io/alisuarez/pen/RWGNLm 中使用的 jQuery

这里的问题是因为在函数中使用了类,所以所有星级评级同时起作用。在 jQuery 中,当我使用 ID 时,它按预期适用于一行特定的评级。我正在将该行动态地克隆为多行。如何为每个 id star-rating1、star-rating2 等运行 jQuery? 任何帮助将不胜感激。提前致谢!

var $star_rating = $('#star-rating .fa');

var SetRatingStar = function() {
  return $star_rating.each(function() {
    if (parseInt($star_rating.siblings('input.rating-value').val()) >=
      parseInt($(this).data('rating'))) {
      return $(this).removeClass('fa-star-o').addClass('fa-star');
    } else {
      return $(this).removeClass('fa-star').addClass('fa-star-o');
    }
  });
};

$star_rating.on('click', function() {
  $star_rating.siblings('input.rating-value').val($(this).data('rating'));
  return SetRatingStar();
});

SetRatingStar();
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <div class="row">
    <div class="col-lg-12">
      <div class="star-rating" id="star-rating">
        <span class="fa fa-star-o" data-rating="1"></span>
        <span class="fa fa-star-o" data-rating="2"></span>
        <span class="fa fa-star-o" data-rating="3"></span>
        <span class="fa fa-star-o" data-rating="4"></span>
        <span class="fa fa-star-o" data-rating="5"></span>
        <input type="hidden" name="whatever1" class="rating-value" value="2.56">
      </div>
    </div>
  </div>
  <div class="row">
    <div class="col-lg-12">
      <div class="star-rating" id="star-rating">
        <span class="fa fa-star-o" data-rating="1"></span>
        <span class="fa fa-star-o" data-rating="2"></span>
        <span class="fa fa-star-o" data-rating="3"></span>
        <span class="fa fa-star-o" data-rating="4"></span>
        <span class="fa fa-star-o" data-rating="5"></span>
        <input type="hidden" name="whatever2" class="rating-value" value="1.9">
      </div>
    </div>
  </div>

最佳答案

以下代码按预期工作
HTML

<div class="container">
     <div class="row">
     <div class="col-lg-12 abc">
  <div class="star-rating">
    <span class="fa fa-star-o" data-rating="1"></span>
    <span class="fa fa-star-o" data-rating="2"></span>
    <span class="fa fa-star-o" data-rating="3"></span>
    <span class="fa fa-star-o" data-rating="4"></span>
    <span class="fa fa-star-o" data-rating="5"></span>
    <input type="hidden" name="whatever1" class="rating-value" value="2.56">
  </div>
 </div>
</div>
<div class="row">
<div class="col-lg-12 abc">
  <div class="star-rating">
    <span class="fa fa-star-o" data-rating="1"></span>
    <span class="fa fa-star-o" data-rating="2"></span>
    <span class="fa fa-star-o" data-rating="3"></span>
    <span class="fa fa-star-o" data-rating="4"></span>
    <span class="fa fa-star-o" data-rating="5"></span>
    <input type="hidden" name="whatever2" class="rating-value" value="1.9">
  </div>
</div>
</div>
   </div>

JQUERY

$('.abc').click(function(){
  var $star_rating = $(this).find('.star-rating .fa');



var SetRatingStar = function() {
 return $star_rating.each(function() {
if (parseInt($star_rating.siblings('input.rating-value').val()) >= parseInt($(this).data('rating'))) {
  return $(this).removeClass('fa-star-o').addClass('fa-star');
 } else {
  return $(this).removeClass('fa-star').addClass('fa-star-o');
}
});
};

$star_rating.on('click', function() {
$star_rating.siblings('input.rating-value').val($(this).data('rating'));
return SetRatingStar();
});
});
SetRatingStar();

关于jquery - 星级评分 jquery 不适用于多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46056486/

相关文章:

php - 将按钮登录更改为登录后注销 o 导航栏引导

javascript - 在 JQuery "ajax"方法中绕过闭包

jquery - Select2 不会格式化项目

html - 如果使用 960 网格系统,如何添加不改变宽度的填充和边框

Jquery Autocomplete 没有按应有的方式显示

javascript - jQuery Mobile ListView 尝试通过应用 'ui-btn-active' 类来突出显示所选元素不起作用。有没有 'selected'类

javascript - 预输入控制不起作用

javascript - 尝试将 jquery .slideDown() 与多个类一起使用

javascript - jQuery 插件 photopile 无法工作,但很简单,我可能做错了什么吗?

twitter-bootstrap - 选择字段的 Bootstrap 验证器