今天在项目中遇到jquery分页插件样式除了问题,当前页无底色,也可以点击。如下:
于是追踪到引入的jquery.paginate.js插件,不知道是不是被别人改过,此代码有点问题。源码如下:
(function (a) {
a.fn.paginate = function (l) {
var c = a.extend({pageNo:1, pageSize:25, groupSize:10, totalCount:0, preStr:"<<", nextStr:">>", url:"#none", postFunction:function () {
alert("没有添加post提交函数");
}}, l || {});
if (c.totalCount == 0) {
return;
}
var f = Math.ceil(c.totalCount / c.pageSize);
var d = Math.ceil(c.pageNo / c.groupSize) - 1;
var k = Math.floor(f / c.groupSize);
var e = d * c.groupSize + 1;
var g = (d + 1) * c.groupSize;
g = d < k ? g : f;
var j = (e > 1);
var b = (g < f);
this.empty();
this.appendPage = function (i) {
if (i === c.pageNo) {
a("<span>" + i + "</span>").appendTo(this);
} else {
a('<a href ="#none" οnclick=\'' + c.postFunction + "(" + i + ");'>" + i + "</a>").appendTo(this);
}
};
if (j) {
this.appendPage(1);
a('<a href ="#none" οnclick=\'' + c.postFunction + "(" + (e - 1) + ");'>" + c.preStr + "</a>").appendTo(this);
}
for (var h = e; h <= g; h++) {
this.appendPage(h);
}
if (b) {
a('<a href ="#none" οnclick=\'' + c.postFunction + "(" + (g + 1) + ");'>" + c.nextStr + "</a>").appendTo(this);
this.appendPage(f);
}
a("<span> 总数 " + c.totalCount + "</span>").appendTo(this);
};
})(jQuery);
发现是第19行 if (i === c.pageNo)这句话有问题,恒等于"==="的判断错了,改成“==”判定当前页与所渲染出的页码是否一致,值相等就可以了,当前页会加上<span>的样式,且不可点击。如下: