|
1 | | -/** |
| 1 | + /** |
2 | 2 | * |
3 | 3 | * Text Pager - jQuery plugin for create pages on div |
4 | 4 | * Copyright (c) 2014 Dmitrij Waśkowski |
|
9 | 9 | * Project home: |
10 | 10 | * https://github.com/dwaskowski/jquery_textpager |
11 | 11 | * |
12 | | - * Version: 1.0 |
| 12 | + * Version: 1.1.0 |
13 | 13 | * |
14 | 14 | */ |
15 | 15 |
|
|
25 | 25 | controlPagesEnabel: (typeof(options) !== "undefined" && options !== null && typeof(options.controlPagesEnabel) !== "undefined" && options.controlPagesEnabel !== null) ? options.controlPagesEnabel : true, |
26 | 26 | controlPagesContent: (typeof(options) !== "undefined" && options !== null && typeof(options.controlPagesContent) !== "undefined" && options.controlPagesContent !== null) ? options.controlPagesContent : 'div' |
27 | 27 | }; |
28 | | - var fulltextHeight = $(this).prop('scrollHeight'); |
29 | | - var textareaHeight = $(this).height(); |
30 | | - var textareaWidth = $(this).width(); |
| 28 | + var fulltextHeight = $(this).prop('scrollHeight'), |
| 29 | + textareaHeight = $(this).height(), |
| 30 | + textareaWidth = $(this).width(); |
| 31 | + |
| 32 | + parseContent = function(parent, textareaHeight, fulltextHeight) { |
| 33 | + var contentHtml = $(parent).html(), |
| 34 | + html = $.parseHTML(contentHtml), |
| 35 | + pages = 1; |
| 36 | + |
| 37 | + // parser |
| 38 | + childrenChecker = function(html) { |
| 39 | + $.each(html, function(i, el) { |
| 40 | + //console.log(boxNum+': '+el.nodeName.toLowerCase()); |
| 41 | + //console.log(el.attributes); |
| 42 | + //console.log(el.childNodes); |
| 43 | + //console.log(el.nodeValue); |
| 44 | + var attributes = el.attributes, |
| 45 | + nodeName = el.nodeName.toLowerCase(); |
| 46 | + |
| 47 | + if (nodeName == 'div') { |
| 48 | + divLevel++; |
| 49 | + divAttrs[divLevel-1] = attributes; |
| 50 | + var newTmpPoint = $('<div>'); |
| 51 | + if (attributes) { |
| 52 | + $.each(attributes, function(i, attr) { |
| 53 | + newTmpPoint.attr(attr.name, attr.value); |
| 54 | + }); |
| 55 | + } |
| 56 | + newTmpPoint.appendTo(tmpBox); |
| 57 | + tmpBox = newTmpPoint; |
| 58 | + childrenChecker(el.childNodes); |
| 59 | + var newTmpPoint = tmpBox.parent(); |
| 60 | + tmpBox = newTmpPoint; |
| 61 | + divLevel--; |
| 62 | + return; |
| 63 | + } |
| 64 | + |
| 65 | + var nodeClone = $(el).clone(); |
| 66 | + tmpBox.append(nodeClone); |
| 67 | + |
| 68 | + if (tmpBox.height() > textareaHeight) { |
| 69 | + nodeClone.detach(); |
| 70 | + if (divLevel > 0) { |
| 71 | + for(var iter=0; iter<divLevel; iter++) { |
| 72 | + var newTmpPoint = tmpBox.parent(); |
| 73 | + tmpBox = newTmpPoint; |
| 74 | + } |
| 75 | + } |
| 76 | + tmpBox.addClass('tp-page-one').css('height',textareaHeight+'px').css('width',textareaWidth+'px'); |
| 77 | + pages++; |
| 78 | + tmpBox = $('<div>').appendTo($(parent)); |
| 79 | + if (divLevel > 0) { |
| 80 | + for(var iter=0; iter<divLevel; iter++) { |
| 81 | + var newTmpPoint = $('<div>'); |
| 82 | + if (divAttrs[iter]) { |
| 83 | + $.each(divAttrs[iter], function(i, attr) { |
| 84 | + newTmpPoint.attr(attr.name, attr.value); |
| 85 | + }); |
| 86 | + } |
| 87 | + newTmpPoint.appendTo(tmpBox); |
| 88 | + tmpBox = newTmpPoint; |
| 89 | + } |
| 90 | + } |
| 91 | + tmpBox.append(nodeClone); |
| 92 | + } |
| 93 | + }); |
| 94 | + } |
| 95 | + |
| 96 | + $(parent).html(''); |
| 97 | + var boxNum = 1, |
| 98 | + divLevel = 0, |
| 99 | + divAttrs = [], |
| 100 | + tmpBox = $('<div>').appendTo($(parent)); |
| 101 | + |
| 102 | + childrenChecker(html); |
| 103 | + tmpBox.addClass('tp-page-one').css('height',textareaHeight+'px').css('width',textareaWidth+'px'); |
| 104 | + return pages; |
| 105 | + } |
31 | 106 |
|
32 | 107 | if(textareaHeight<fulltextHeight){ |
33 | | - var pageNow = 1; |
34 | | - var margTop = 0; |
35 | | - var pages = Math.ceil(fulltextHeight/textareaHeight); |
| 108 | + var self = this; |
| 109 | + var pageNow = 1, |
| 110 | + margTop = 0, |
| 111 | + pages = parseContent(self, textareaHeight, fulltextHeight); |
36 | 112 |
|
37 | 113 | if (eOptions.controlArrows==='') { |
38 | 114 | $('<div>').addClass('tp-control-arrows').appendTo($(parent)); |
|
60 | 136 | $('<div>').addClass('tp-horizontalbox').css('height',textareaHeight+'px').css('width',textareaWidth+'px').appendTo($(this)); |
61 | 137 | $('<div>').addClass('tp-vertivalbox').html(contentHtml).css('width',textareaWidth+'px').appendTo($(this).find('.tp-horizontalbox')); |
62 | 138 |
|
63 | | - var self = this; |
64 | 139 | $(eOptions.controlArrows).find('.tp-control-arrow-left').unbind('click').click(function(){ |
65 | 140 | var thisPage = pageNow-1; |
66 | 141 | if(thisPage<1){ |
|
0 commit comments