Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
* easyListSplitter 1.0.2 - jQuery Plugin
* written by Andrea Cima Serniotti
* http://www.madeincima.eu
*
* Copyright (c) 2010 Andrea Cima Serniotti (http://www.madeincima.eu)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* Built for jQuery library
* http://jquery.com
*
*/
/*
To activate the plugin add the following code to your own js file:
$('.your-list-class-name').easyListSplitter({
colNumber: 3,
direction: 'horizontal'
});
*/
var j = 1;
(function(jQuery) {
jQuery.fn.easyListSplitter = function(options) {
var defaults = {
colNumber: 2, // Insert here the number of columns you want. Consider that the plugin will create the number of cols requested only if there are enough items in the list.
direction: 'vertical'
};
this.each(function() {
var obj = jQuery(this);
var settings = jQuery.extend(defaults, options);
var totalListElements = jQuery(this).children('li').size();
var baseColItems = Math.ceil(totalListElements / settings.colNumber);
var listClass = jQuery(this).attr('class');
// -------- Create List Elements given colNumber ------------------------------------------------------------------------------
for (i=1;i<=settings.colNumber;i++)
{
if(i==1){
jQuery(this).addClass('listCol1').wrap('<div class="listContainer'+j+'"></div>');
} else if(jQuery(this).is('ul')){ // Check whether the list is ordered or unordered
jQuery(this).parents('.listContainer'+j).append('<ul class="listCol'+i+'"></ul>');
} else{
jQuery(this).parents('.listContainer'+j).append('<ol class="listCol'+i+'"></ol>');
}
jQuery('.listContainer'+j+' > ul,.listContainer'+j+' > ol').addClass(listClass);
}
var listItem = 0;
var k = 1;
var l = 0;
if(settings.direction == 'vertical'){ // -------- Append List Elements to the respective listCol - Vertical -------------------------------
jQuery(this).children('li').each(function(){
listItem = listItem+1;
if (listItem > baseColItems*(settings.colNumber-1) ){
jQuery(this).parents('.listContainer'+j).find('.listCol'+settings.colNumber).append(this);
}
else {
if(listItem<=(baseColItems*k)){
jQuery(this).parents('.listContainer'+j).find('.listCol'+k).append(this);
}
else{
jQuery(this).parents('.listContainer'+j).find('.listCol'+(k+1)).append(this);
k = k+1;
}
}
});
jQuery('.listContainer'+j).find('ol,ul').each(function(){
if(jQuery(this).children().size() == 0) {
jQuery(this).remove();
}
});
} else{ // -------- Append List Elements to the respective listCol - Horizontal ----------------------------------------------------------
jQuery(this).children('li').each(function(){
l = l+1;
if(l <= settings.colNumber){
jQuery(this).parents('.listContainer'+j).find('.listCol'+l).append(this);
} else {
l = 1;
jQuery(this).parents('.listContainer'+j).find('.listCol'+l).append(this);
}
});
}
jQuery('.listContainer'+j).find('ol:last,ul:last').addClass('last'); // Set class last on the last UL or OL
j = j+1;
});
};
})(jQuery);