Как стать автором
Поиск
Написать публикацию
Обновить

простой, но звездный рейтинг на JQuery

Привет.
Появилась необходимость написания компонента на Java Script для определения рейтинга, так называемого star rating.

Подчеркну, что интересовала именно UI часть, ибо запись в БД и обработка рейтинга уже сделана на JAVA.
Сейчас на множестве блогов и новостных сайтов используется «звездный» подход для определения рейтинга комментария, статьи, новости. Удобно и приятно.
Обычно это 5 звездочек. При клике на одну из них выставляется соответственная оценка.
В сети нашел множество примеров для этого дела — на JQuery, с использованием AJAX и «обычного» JS.

Порывшись и на хабре, нашел ссылки на некоторые примеры:
http://www.fyneworks.com/jquery/star-rating/#tab-Testing
http://www.m3nt0r.de/devel/raterDemo/

Но большинство примеров показались мне усложненными. Хотелось же попроще и покороче. Пришлось заниматься велосипедизмом. Может это и неправильно в том плане, что таких примеров море в сети, но все же ой как захотелось минимализма.

И вот что из этого вышло:

1) маленький star rating с использованием JQuery, скриптовая часть занимает 57 строк;
2) CSS для затемнения звездочек при наведении мыши с помощью стандартных CSS фильтров;
3) соотвественно HTML часть для отображения всего этого безобразия.

Прошу пинать и жаловать!

JS часть

$(document).ready(function() {

var starId = "[id*='star']";
var curRatingId = "[id*='curRating']";
var starredId = "[id*='starred']";

//mouse over handling
$(starId).bind(('mouseenter'), function(){
starIndex = $(this).attr('id').substr(4);
$('#curRating' + starIndex).show();
$('#rating').hide();

});

$(starId).bind(('mouseleave'), function(){
starIndex = $(this).attr('id').substr(4);
$('#curRating' + starIndex).hide();
$('#rating').show();
});

$(starredId).bind(('mouseenter'), function(){
starIndex = $(this).attr('id').substr(7);
$('#curRating' + starIndex).show();
$('#rating').hide();
});

$(starredId).bind(('mouseleave'), function(){
starIndex = $(this).attr('id').substr(7);
$('#curRating' + starIndex).hide();
$('#rating').show();
});

//opacity handling
$(starId).click(function() {
starIndex = $(this).attr('id').substr(4);
for (var i=1;i<=starIndex;i++){
$('#star' + i).hide();
$('#starred' + i).show();
$('#starred' + i).parent().removeAttr('class');
}
$('#rating').html(starIndex);
});

$(starredId).click(function() {
starredIndex = $(this).attr('id').substr(7);
for (var i=1;i<=starredIndex;i++){
$('#starred' + i).show();
$('#star' + i).hide();
}

for (var y=parseInt(starredIndex)+1;y<=5;y++){
$('#starred' + y).hide();
$('#star' + y).show();
}
$('#rating').html(starredIndex);
});
})


один архив с HTML и CSS

http://www.easy-share.com/1908532338/star.rar

совместимость

Протестировано и работает в следующих браузерах:
FF 3.5.5; IE (7); IE8; IE6; Opera 10.00; Chrome 3.0.195.33; Safari 4 (Public Beta).
В IE 5.5 к сожалению, не работает ))

Жду ваших комментариев советов по минимизации.

А также очень интересуют отзывы тех, кто проще придумал рейтинг.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.