(function($) { $(document).ready(function() { var colSets = $( '.colSet' ); colSets.each( function( index, element ) { var colSet = $(this); var columns = colSet.children( '.sColumn' ); var colNum = columns.length; var freeCols = 12; columns.each(function( index, element ) { // column does not have specified width if( ! $(this).is( '[class*=col-lg-]' ) ) { return; } var columnClasses = $(this).attr( 'class' ).split(' '); var numCols = 0; // Get # of initial grid columns assigned for the column for( var key in columnClasses ) { var currClass = columnClasses[key]; if( currClass.indexOf( 'col-lg-' ) >= 0 ) { numCols = currClass.substr(currClass.length - 2); if( numCols.substr(0, 1) == '-' ) { numCols = numCols.substr( numCols.length - 1 ); } } } // Adjust the remaining freeCols accordingly freeCols -= numCols; // Check if user provided widths with total that exceeds 100%. // If so, just divide all columns evenly. // If number is not exactly divisible => add remainder to the last column. if( freeCols < 0 ) { freeCols = 12; colNum = columns.length; columns.each(function( index, element ) { $(this).attr( 'class', function (i, c) { return c.replace( /col-lg-(\d+)/, 'col-lg-' + freeCols/colNum ); }); freeCols -= freeCols/colNum; colNum--; }); colNum = 0; return; } // Account for all columns having the class col-lg-.. colNum--; }); // Apply free width to the rest of the columns if( colNum != 0 ) { var numCols = Math.floor(freeCols / colNum); columns.each(function(index, element) { if( ! $(this).is( '[class*=col-lg-]' ) ) { $(this).addClass( 'col-lg-' + numCols ); freeCols -= numCols; } }); } // If all columns have set width, but freeWidth is remaining, add it to the last column if( freeCols != 0 ) { var $lastCol = columns.last(); var lastColClasses = $lastCol.attr( 'class' ).split(' '); for( var key in lastColClasses ) { var currClass = lastColClasses[key]; if( currClass.indexOf( 'col-lg-' ) >= 0 ) { numCols = Number( currClass.substr(currClass.length - 1) ); numCols += freeCols; $lastCol.removeClass(currClass); } } $lastCol.addClass( 'col-lg-' + numCols ); } }); }); })(jQuery);