Следующий код html простой системы рейтинга звезд.Звезды рейтинга JQuery не работают должным образом
<div class="review-stars clearfix" id="featured">
<fieldset data-component-bound="true" class="star-rating-widget">
<legend class="offscreen">Rating</legend>
<ul class="stars-0">
<li>
<input id="rating-1" name="rating" value="1" type="radio">
<label for="rating-1">1 (Eek! Methinks not.)</label>
</li>
<li>
<input id="rating-2" name="rating" value="2" type="radio">
<label for="rating-2">2 (Meh. I've experienced better.)</label>
</li>
<li>
<input id="rating-3" name="rating" value="3" type="radio">
<label for="rating-3">3 (A-OK.)</label>
</li>
<li>
<input id="rating-4" name="rating" value="4" type="radio">
<label for="rating-4">4 (Yay! I'm a fan.)</label>
</li>
<li>
<input id="rating-5" name="rating" value="5" type="radio">
<label for="rating-5">5 (Woohoo! As good as it gets!)</label>
</li>
</ul>
<p class="description">Select your rating.</p>
</fieldset>
</div>
Вот JQuery -
$(document).ready(function() {
$('#rating-1').hover(
function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-1');
},
function() {
$('#featured ul').removeClass();
});
$('#rating-2').hover(
function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-2');
},
function() {
$('#featured ul').removeClass();
});
$('#rating-3').hover(
function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-3');
},
function() {
$('#featured ul').removeClass();
});
$('#rating-4').hover(
function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-4');
},
function() {
$('#featured ul').removeClass();
});
$('#rating-5').hover(
function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-5');
},
function() {
$('#featured ul').removeClass();
});
$('#rating-1').click(function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-1');
});
$('#rating-2').click(function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-2');
});
$('#rating-3').click(function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-3');
});
$('#rating-4').click(function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-4');
});
$('#rating-5').click(function() {
$('#featured ul').removeClass();
$('#featured ul').addClass('stars-5');
});
});
Здесь класс ul
внести изменения в справочном положение изображения звезды. Это означает, что ul class = "stars-0"
не покажет никакой звезды, ul class = "stars-1"
покажет 1 звезду, выбранную ..... (Это не проблема). Когда люди будут наводиться на любой радиокнопку, соответствующий класс будет добавлен в ul
, и при наведении курсора снова он будет удален, по щелчку произойдет то же самое. При этом он работает нормально. Но как только радио проверяется, событие mouseout не должно работать, чтобы поддерживать класс ul
. Как я могу это сделать. Еще одна вещь, написанная jquery, кажется, содержит много кода. Есть ли способ уменьшить линии и оптимизировать. Заранее спасибо
Хорошо, это здорово. но как насчет добавления классов в «ul» на радио и не удалять этот класс до тех пор, пока не будет проверено новое радио? –
Вам действительно нужно использовать наведение и наведите курсор сюда? потому что просто щелчок может выполнить эту работу. –
Ya, нажмите, чтобы сделать, но на паре значение рейтинга, как плохой, хороший, большой и т. Д. Будет показано справа, чтобы сделать более удобным для пользователя. –