1 Star 0 Fork 0

沐阳夕风 / 好评五星

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
jquery-star.js 4.76 KB
一键复制 编辑 原始数据 按行查看 历史
沐阳夕风 提交于 2019-03-04 15:00 . 修改一个小bug
/**
* 好评数插件
* @author 杨阳
*/
(function ($) {
$.fn.extend({
star: function (options) {
if (!this.length) {
if (options && options.debug && window.console) {
console.warn("必须指定一个可用元素");
}
return;
}
var star = $.data(this[0], "star");
if (star) {
if ($.isPlainObject(star.methods)) {
if (star.methods.hasOwnProperty(options)) {
return star.methods[options].call(this);
}
}
return star;
}
var opts = $.extend(defaults, options);
var path = filePath();
var cssUrl = path + "theme/" + opts.theme + "/css/star.css";
if ($("link[href*='" + cssUrl + "']").length == 0) {
dynamicLoadCss(cssUrl);
}
var $ul = $("<ul class='star-list'></ul>");
$ul.height(opts.height);
var score = opts.score * opts.count; // 实际分数
var count = parseInt(score);
for (var i = 0; i < opts.count; i++) {
var $li = $("<li class='star'></li>");
$li.width(opts.width).height(opts.width);
if (score) {
if (i < count) {
$li.addClass("all");
} else if (i == count && score - count > 0) {
$li.addClass("half");
}
}
$ul.append($li);
}
$(this).empty().append($ul).append("<div class='score'><span>0</span>分</div>");
if (!opts.view) {
$ul.find("li").click(function () {
var index = $(this).index();
$ul.find("li").removeClass("all").removeClass("half");
for (var i = 0; i <= index; i++) {
$ul.find("li").eq(i).addClass("all");
}
$ul.next().addClass("active").find("span").attr("data-index", index + 1).html(index + 1);
if ($.isFunction(opts.click)) {
opts.click(index + 1, $ul.find("li").length);
}
});
$ul.find("li").hover(function () {
var index = $(this).index();
$ul.find("li").removeClass("all").removeClass("half");
for (var i = 0; i <= index; i++) {
$ul.find("li").eq(i).addClass("all");
}
$ul.next().find("span").html(index + 1);
});
$ul.mouseout(function () {
if ($ul.next(".active").length) {
var index = parseInt($ul.next(".active").find("span").attr("data-index"));
$ul.find("li").removeClass("all").removeClass("half");
for (var i = 0; i < index; i++) {
$ul.find("li").eq(i).addClass("all");
}
$ul.next(".active").find("span").html(index);
} else {
$ul.find("li").removeClass("all").removeClass("half");
$ul.next().find("span").html(0);
}
});
}
this.methods = {
count: function () {
return $.fn.star.count(this);
},
score: function () {
return $.fn.star.score(this);
}
};
$.data(this[0], "star", this);
return this;
}
});
var defaults = {
theme: 'default',
count: 5,
score: 0,
width: 15,
height: 15,
click: function (selected, count) {
},
view: false,
};
/**
* 动态加载CSS
* @param {string} url 样式地址
*/
function dynamicLoadCss(url) {
var $link = $("<link type='text/css' rel='stylesheet'/>");
$link.attr("href", url);
$("head").append($link);
}
/**
* 当前插件所在目录
*/
function filePath() {
return $("script[src*='jquery-star.js']").attr("src").replace("jquery-star.js", "");
}
$.fn.star.count = function (obj) {
var $ul = $(obj).find("ul.star-list");
return $ul.find("li.star.all").length;
};
$.fn.star.score = function (obj) {
var $ul = $(obj).find("ul.star-list");
var count = $ul.find("li.star").length;
var selected = $ul.find("li.star.all").length;
var score = selected / count;
return Math.round(score * 100, 2) / 100;
};
})(window.jQuery);
JavaScript
1
https://gitee.com/ycoder-pro/js-star.git
git@gitee.com:ycoder-pro/js-star.git
ycoder-pro
js-star
好评五星
master

搜索帮助