表格排序分页插件
使用方法:
$(function() {
$("#exampletable").slimtable();
});
来源:http://slimtable.mcfish.org/
修正tr带data-id : slimtable.min.js
/**
* SlimTable
* http://slimtable.mcfish.org/
*
* Licensed under MIT license.
*
* Date: 28 / 07 / 2013
* @version 1.1.1
* @author Pekka Harjamäki
*/
(function (e) {
e.fn.slimtable = function (t) {
function c(t) {
var r,
i,
s = document.createElement("select");
r = document.createElement("div"),
e(r).addClass("slimtable-paging-div");
for (var o = 0; o < n.ipp_list.length; o++) {
var u = document.createElement("option");
u.value = n.ipp_list[o],
u.text = n.ipp_list[o],
u.value == n.itemsPerPage && (u.selected = !0),
e(s).append(u)
}
e(s).on("change", m),
e(s).addClass("slimtable-paging-select"),
i = document.createElement("div"),
e(i).addClass("slimtable-paging-btnsdiv"),
e(r).append(i),
a = i,
i = document.createElement("div"),
e(i).addClass("slimtable-paging-seldiv"),
e(i).append(s),
e(i).append("items/page"),
e(r).append(i),
i = document.createElement("div"),
e(i).addClass("slimtable-container-div"),
e(i).append(r),
t.before(i),
t.insertBefore(r)
}
function h() {
o.find("th").each(function (t) {
e(this).attr("unselectable", "on");
if (r[t] && r[t].sortable) {
var n = document.createElement("span");
titlebackground==0?e(n).addClass("slimtable-sprites"):e(n).addClass("slimtable-sprites2"),
e(n).attr("unselectable", "on"),
r[t].sordir == "asc" ? e(n).addClass("slimtable-sortasc") : r[t].sordir == "desc" ? e(n).addClass("slimtable-sortdesc") : e(n).addClass("slimtable-sortboth"),
e(this).append(n).css({
cursor : "pointer"
}).on("click", g)
}
})
}
function p() {
var t = o.find("th");
r = new Array;
for (var i = 0; i < t.length; i++) {
var a = !0,
f = [];
for (var l = 0; l < n.colSettings.length; l++)
if (n.colSettings[l].colNumber == i) {
n.colSettings[l].enableSort == 0 && (a = !1),
n.colSettings[l].addClasses && n.colSettings[l].addClasses.length > 0 && (f = n.colSettings[l].addClasses);
break
}
r[i] = {
sortable : a,
classes : f,
sortdir : "asc"
}
}
!n.tableData || n.tableData.length <= 0 ? u.find("tr").each(function () {
var t = new Array;
e(this).find("td").each(function () {
t.push(e(this).html())
}),
s.push(t);
sd.push(e(this)[0].dataset);
}) : s = n.tableData
}
function d() {
var t = parseInt(f) + parseInt(l),
n,
i,
o;
u.empty(),
t = t > s.length ? s.length : t;
for (var c = f; c < t; c++) {
n = document.createElement("tr");
for (var h = 0; h < s[c].length; h++) {
i = document.createElement("td"),
e(i).html(s[c][h]);
for (var p = 0; p < r[h].classes.length; p++)
e(i).addClass(r[h].classes[p]);
e(n).append(i)
}
//console.log(sd[c]);
//n[0].dataset=sd[c];
//console.log(n,typeof(n));
n.setAttribute("data-id",sd[c].id);
u.append(n)
}
e(a).empty(),
o = Math.ceil(s.length / l);
for (var c = 0; c < o; c++)
n = document.createElement("div"), e(n).addClass("slimtable-page-btn"), e(n).on("click", v), e(n).text(c + 1), c * l == f && e(n).addClass("active"), e(a).append(n)
}
function v(t) {
var n = parseInt(e(this).text()) - 1,
r = Math.ceil(s.length / l);
if (n < 0 || n >= r)
return;
f = n * l,
d()
}
function m(e) {
var t = this.value;
l = this.value,
f = 0,
d()
}
function g(t) {
var n = e(this).index(),
u,
a,
f = e.inArray(n, i);
t.preventDefault(),
t.shiftKey ? f < 0 ? (i.push(n), r[n].sortdir = "asc") : r[n].sortdir == "asc" ? r[n].sortdir = "desc" : r[n].sortdir = "asc" : (i = [n], f < 0 ? r[n].sortdir = "asc" : r[n].sortdir == "asc" ? r[n].sortdir = "desc" : r[n].sortdir = "asc");
for (var l = 0; l < r.length; l++) {
if (!r[l] || !r[l].sortable)
continue;
u = o.find("th:nth-child(" + (l + 1) + ")"),
a = u.find("span"),
e.inArray(l, i) < 0 ? (u.removeClass("slimtable-activeth"), a.removeClass("slimtable-sortasc"), a.removeClass("slimtable-sortdesc"), a.addClass("slimtable-sortboth")) : (a.removeClass("slimtable-sortboth"), a.removeClass("slimtable-sort" + (r[l].sortdir == "asc" ? "desc" : "asc")), a.addClass("slimtable-sort" + r[l].sortdir), u.addClass("slimtable-activeth"))
}
i.length > 0 && s.sort(function (e, t) {
var n,
s;
for (var o = 0; o < i.length; o++)
return n = i[o], e[n] == t[n] && o < i.length - 1 ? (s = i[o + 1], y(e[s], t[s], r[s].sortdir)) : y(e[n], t[n], r[n].sortdir)
}),
d()
}
function y(e, t, n) {
var r = /[^0-9]/g,
i = /[^0-9,\.]/g,
s = /^([0-9]+([\.,][0-9]+)?)\s*[%$€£e]?$/,
o,
u;
return r.test(e) ? i.test(e) ? s.test(e) ? (o = RegExp.$1, s.test(t), u = RegExp.$1, b(o, u, n)) : E(e, t, n) : b(e, t, n) : w(e, t, n)
}
function b(e, t, n) {
var r = parseFloat(e.replace(",", ".")),
i = parseFloat(t.replace(",", "."));
return n == "asc" ? r - i : i - r
}
function w(e, t, n) {
return n == "asc" ? e - t : t - e
}
function E(e, t, n) {
var r = new String(e.toLowerCase()),
i = new String(t.toLowerCase());
return n == "asc" ? r.localeCompare(i) : i.localeCompare(r)
}
var n = e.extend({
tableData : null,
itemsPerPage : 10,
ipp_list : [5, 10, 20],
colSettings : [],
titlebackground:0
}, t),
r = [],
i = [],
s = [],
sd=[],
titlebackground,
o,
u,
a,
f,
l;
return this.each(function () {
f = 0,
l = n.itemsPerPage,
titlebackground=n.titlebackground;
o = e(this).find("thead"),
u = e(this).find("tbody");
if (o.length == 0 || u.length == 0) {
console.log("Slimtable: thead/tbody missing from table!");
return
}
p();
if (s.length > 0 && r.length != s[0].length) {
console.log("Slimtable: Different number of columns in header and data!", r, s);
return
}
h(),
e(this).addClass("slimtable"),
c(e(this)),
d()
})
}
})(jQuery);
浙公网安备 33010602011771号