【发布时间】:2017-09-05 13:41:06
【问题描述】:
我已经使用了这个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>
【问题讨论】:
-
您需要将 click 事件处理程序限定为仅在单击的评分实例上运行,而不是在具有相同值的所有评分上运行。请参阅下面的答案。
标签: jquery css twitter-bootstrap-3