/* * 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);