add public design files
This commit is contained in:
80
design/carheart/js/project.js
Normal file
80
design/carheart/js/project.js
Normal file
@@ -0,0 +1,80 @@
|
||||
// Звёздный рейтинг товаров
|
||||
$.fn.rater = function (options) {
|
||||
var opts = $.extend({}, $.fn.rater.defaults, options);
|
||||
return this.each(function () {
|
||||
var $this = $(this);
|
||||
var $on = $this.find('.rater-starsOn');
|
||||
var $off = $this.find('.rater-starsOff');
|
||||
opts.size = $on.height();
|
||||
if (opts.rating == undefined) opts.rating = $on.width() / opts.size;
|
||||
if (opts.id == undefined) opts.id = $this.attr('id');
|
||||
|
||||
$off.mousemove(function (e) {
|
||||
var left = e.clientX - $off.offset().left;
|
||||
var width = $off.width() - ($off.width() - left);
|
||||
width = Math.ceil(width / (opts.size / opts.step)) * opts.size / opts.step;
|
||||
$on.width(width);
|
||||
}).hover(function (e) { $on.addClass('rater-starsHover'); }, function (e) {
|
||||
$on.removeClass('rater-starsHover'); $on.width(opts.rating * opts.size);
|
||||
}).click(function (e) {
|
||||
var r = Math.round($on.width() / $off.width() * (opts.units * opts.step)) / opts.step;
|
||||
$off.unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave');
|
||||
$off.css('cursor', 'default'); $on.css('cursor', 'default');
|
||||
$.fn.rater.rate($this, opts, r);
|
||||
}).css('cursor', 'pointer'); $on.css('cursor', 'pointer');
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.rater.defaults = {
|
||||
postHref: location.href,
|
||||
units: 5,
|
||||
step: 1
|
||||
};
|
||||
|
||||
$.fn.rater.rate = function ($this, opts, rating) {
|
||||
var $on = $this.find('.rater-starsOn');
|
||||
var $off = $this.find('.rater-starsOff');
|
||||
$off.fadeTo(600, 0.4, function () {
|
||||
$.ajax({
|
||||
url: opts.postHref,
|
||||
type: "POST",
|
||||
data: 'id=' + opts.id + '&rating=' + rating,
|
||||
complete: function (req) {
|
||||
if (req.status == 200) { //success
|
||||
opts.rating = parseFloat(req.responseText);
|
||||
|
||||
if (opts.rating > 0) {
|
||||
opts.rating = parseFloat(req.responseText);
|
||||
$off.fadeTo(200, 0.1, function () {
|
||||
$on.removeClass('rater-starsHover').width(opts.rating * opts.size);
|
||||
var $count = $this.find('.rater-rateCount');
|
||||
$count.text(parseInt($count.text()) + 1);
|
||||
$this.find('.rater-rating').text(opts.rating.toFixed(1));
|
||||
$off.fadeTo(200, 1);
|
||||
});
|
||||
//alert('Спасибо! Ваш голос учтен.');
|
||||
}
|
||||
else
|
||||
if (opts.rating == -1) {
|
||||
$off.fadeTo(200, 0.6, function () {
|
||||
$this.find('.test-text').text('Вы уже голосовали!');
|
||||
});
|
||||
//alert('Вы уже голосовали за данный товар!');
|
||||
}
|
||||
else {
|
||||
$off.fadeTo(200, 0.6, function () {
|
||||
$this.find('.test-text').text('Вы уже голосовали!');
|
||||
});
|
||||
//alert('Вы уже голосовали за данный товар!');
|
||||
}
|
||||
} else { //failure
|
||||
alert(req.responseText);
|
||||
$on.removeClass('rater-starsHover').width(opts.rating * opts.size);
|
||||
$this.rater(opts);
|
||||
$off.fadeTo(2200, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
// end
|
||||
Reference in New Issue
Block a user