原理:百度编辑器umeditor 对于文章内容来说,每个段落都会在前面加入一个<p>标签,可以利用这个<p>标签进行分页。
步骤:1、文章中有多少个<p>标签:$("showContent p").length;其中("showContent p")是标签数组
2、循环每个<p>标签,获取每个<p>标签的滚动高度: $("#showContent p")[i].scrollHeight;其中i是个数
3、从第一个<p>的标签高度开始加,如果和大于980(文章高度),那么就分页,即将其设置为第一小组;依次类推,将文章的<p>全部分组
4、根据上面的分组即可知道文章有多少页,一组就是一页!然后点击第几页就是第几组显示,其他的隐藏!
5、小提示:为了防止到最后一页高度低,造成分页网上跑,可以设置文章的最小高度:min-height ; 如min-height : 980px
代码如下:
js部分:
$(function() {
var Relative_len = 0;
var group_no = 1;
for (var i = 0; i < $("#showContent p").length; i++) { //循环每个<p>标签,获取每个<p>标签的长度
if (Relative_len > 980) { //设置大于980就分页
Relative_len = $("#showContent p")[i].scrollHeight;
group_no++;
$("#showContent p")[i].className = "pagegroup_" + group_no;
} else {
Relative_len = $("#showContent p")[i].scrollHeight + Relative_len;
$("#showContent p")[i].className = "pagegroup_" + group_no;
}
}
if (group_no > 1) {
$("#showContent p").hide();
$("#showContent p.pagegroup_1").show();
var current = 1;
var previous = 1, next = 2, pageIndex = 1;
var html = "<a href=\javascript:void(0); data-id=" + previous + " id='page_previous' ><</a> ";
for (var i = 1; i <= group_no; i++) {
if (i == 1) {
html += " <a href=\javascript:void(0); class='currentp' id='page" + i + "' data-id=" + i + " > " + i + "</a> ";
} else {
html += " <a href=\javascript:void(0); id='page" + i + "' data-id=" + i + " > " + i + "</a> ";
}
}
html += " <a href=\javascript:void(0); data-id=" + next + " id='page_next' >></a> ";
html += " <a href=\javascript:void(0); >在本页阅读全文</a> ";
$("#articlePages").html(html);
}
$("#articlePages a").click(function() {
pageIndex = $(this).attr("data-id");
if (pageIndex) {
current = pageIndex;
$(".currentp").attr("class", "");
$("#page" + pageIndex).attr("class", "currentp");
$("#showContent p").hide();
$("#showContent p.pagegroup_"+ pageIndex).show();
if (current > 1) {
previous = parseInt(current) - parseInt(1);
$("#page_previous").attr("data-id", previous);
} else {
previous = 1;
$("#page_previous").attr("data-id", previous);
}
if (current < group_no) {
next = parseInt(current) + parseInt(1);
$("#page_next").attr("data-id", next);
} else {
next = group_no;
$("#page_next").attr("data-id", next);
}
} else {
$("#showContent p").show();
$("#articlePages").hide();
}
})
});