From a658ab91e7b32ee89b5e1ac877689b48b27f7e5e Mon Sep 17 00:00:00 2001 From: Steven Vachon Date: Thu, 20 Feb 2014 12:02:38 -0500 Subject: [PATCH 1/3] Create README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..febfdf2 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# jquery.wRECkeR + +wRECkeR: Responsive Equal-Height Columns and Rows + +--- + +[![Analytics](https://ga-beacon.appspot.com/UA-3614308-8/stevenvachon/jquery.wrecker)](https://github.com/igrigorik/ga-beacon "Google Analytics") [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/stevenvachon/jquery.wrecker/trend.png)](https://bitdeli.com/free) From ddcc6c70eee0659d6605ba4f5d2e25a3f93f96cc Mon Sep 17 00:00:00 2001 From: Albert Date: Tue, 20 Dec 2016 15:39:20 +0000 Subject: [PATCH 2/3] Added excludeLastSingleItem option and functionality --- jquery.wrecker.js | 45 ++++++++++++++++++++++++++++++------------- jquery.wrecker.min.js | 6 ++---- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/jquery.wrecker.js b/jquery.wrecker.js index 8076184..51d1655 100644 --- a/jquery.wrecker.js +++ b/jquery.wrecker.js @@ -1,5 +1,5 @@ /** - * jQuery Wrecker v0.2 + * jQuery Wrecker v0.3 * Responsive Equal-Height Columns and Rows * http://www.svachon.com/blog/wrecker-responsive-equal-height-columns-and-rows * @@ -20,7 +20,8 @@ $.Wrecker = function() var settings = { itemSelector : "", maxColumns : 1, - responsiveColumns : [ /*{800:1}*/ ] // Had to nest this way because not all browsers loop through objects in correct order + responsiveColumns : [ /*{800:1}*/ ], // Had to nest this way because not all browsers loop through objects in correct order + excludeLastSingleItem : false }; @@ -112,6 +113,12 @@ $.Wrecker = function() var startIndex = 0; var count = 0; + + var numCellsIsEven = numCells % 2 === 0; + var excludeLastItem = false; + if (settings.excludeLastSingleItem && !numCellsIsEven) { + excludeLastItem = true; + } // Add row containers cells.each(function(i) @@ -120,22 +127,34 @@ $.Wrecker = function() { startIndex = i; } - - if (count>=columnCount || i>=numCells-1) + + if (!excludeLastItem || i < numCells-1) { - cells.slice(startIndex,i+1).wrapAll('
'); - - count = 0; - } - // Since Wrecker styles are removed for single columns, they must be re-added - if (previousColumnCount <= 1) - { - $(this).addClass("wrecker-cell").css({display:"table-cell", float:"none"}); + if (count>=columnCount || i>=numCells-1) + { + cells.slice(startIndex,i+1).wrapAll('
'); + + count = 0; + } + + // Since Wrecker styles are removed for single columns, they must be re-added + if (previousColumnCount <= 1) + { + $(this).addClass("wrecker-cell").css({display:"table-cell", float:"none"}); + } + + }else{ + $(this).addClass("wrecker-single-last"); } }); - element.addClass("wrecker").css("display", "table"); + if (excludeLastItem) + { + cells.slice(0,numCells-2).parent().wrapAll('
'); + }else{ + element.addClass("wrecker").css("display", "table"); + } } else { diff --git a/jquery.wrecker.min.js b/jquery.wrecker.min.js index 054b4f8..3b50bcc 100644 --- a/jquery.wrecker.min.js +++ b/jquery.wrecker.min.js @@ -1,11 +1,9 @@ /** - * jQuery Wrecker v0.2 + * jQuery Wrecker v0.3 * Responsive Equal-Height Columns and Rows * http://www.svachon.com/blog/wrecker-responsive-equal-height-columns-and-rows * * Licensed under the MIT license. * Copyright 2013 Steven Vachon */ -(function(d){d.Wrecker=function(){function a(){for(var j=g.maxColumns,a=d(window).innerWidth(),c=0,h=g.responsiveColumns.length;c=a&&(j=l[f])}j!=b&&0=b||c>=f-1)a.slice(e, -c+1).wrapAll('
'),h=0;1>=m&&d(this).addClass("wrecker-cell").css({display:"table-cell",float:"none"})});c.addClass("wrecker").css("display","table")}else a.removeClass("wrecker-cell").css({display:"",float:""}),c.removeClass("wrecker").css("display","")}var b=0,c,m=0,g={itemSelector:"",maxColumns:1,responsiveColumns:[]};this.changeSettings=f;this.destroy=function(){d(window).off("resize",k);b=0;e();c.removeData("wrecker")};this.reload=e;(function(b, -e){c=d(e);f(b);d(window).on("resize",k);a()}).apply(this,arguments)};d.fn.wrecker=function(a){var f="string"===typeof a,k=Array.prototype.slice.call(arguments,1);this.each(function(){var e=d(this),b=e.data("wrecker");f?b?d.isFunction(b[a])?b[a].apply(b,k):console.error('No such Wrecker method "'+a+'"'):console.error('Cannot call Wrecker methods prior to initialization; attempted to call method "'+a+'"'):(a=a||{},b?b.changeSettings(a):e.data("wrecker",new d.Wrecker(a,this)))});return this}})(jQuery); +!function(a){a.Wrecker=function(){function f(b,d){c=a(d),h(b),a(window).on("resize",j),g()}function g(){for(var c=e.maxColumns,f=a(window).innerWidth(),g=0,h=e.responsiveColumns.length;g=f&&(c=i[j])}c!=b&&c>0&&(d=b,b=c,k())}function h(b){a.support.leadingWhitespace||(b.responsiveColumns=[]),e=a.extend(e,b)}function i(){a(window).off("resize",j),b=0,k(),c.removeData("wrecker")}function j(a){g()}function k(){c.children("div.wrecker-row").children().unwrap();var f=c.children(e.itemSelector);if(b>1){var g=f.length,h=0,i=0,j=g%2===0,k=!1;e.excludeLastSingleItem&&!j&&(k=!0),f.each(function(c){1==++i&&(h=c),!k||c=b||c>=g-1)&&(f.slice(h,c+1).wrapAll('
'),i=0),d<=1&&a(this).addClass("wrecker-cell").css({display:"table-cell",float:"none"})):a(this).addClass("wrecker-single-last")}),k?f.slice(0,g-2).parent().wrapAll('
'):c.addClass("wrecker").css("display","table")}else f.removeClass("wrecker-cell").css({display:"",float:""}),c.removeClass("wrecker").css("display","")}var c,b=0,d=0,e={itemSelector:"",maxColumns:1,responsiveColumns:[],excludeLastSingleItem:!1};this.changeSettings=h,this.destroy=i,this.reload=k,f.apply(this,arguments)},a.fn.wrecker=function(b){var c="string"==typeof b,d=Array.prototype.slice.call(arguments,1);return this.each(function(e){var f=a(this),g=f.data("wrecker");if(c){if(!g)return void console.error('Cannot call Wrecker methods prior to initialization; attempted to call method "'+b+'"');if(!a.isFunction(g[b]))return void console.error('No such Wrecker method "'+b+'"');g[b].apply(g,d)}else b=b||{},g?g.changeSettings(b):f.data("wrecker",new a.Wrecker(b,this))}),this}}(jQuery); \ No newline at end of file From 5469d384171c5840ba6765422b6d793cfc36f9c0 Mon Sep 17 00:00:00 2001 From: Albert Date: Wed, 21 Dec 2016 13:15:56 +0000 Subject: [PATCH 3/3] Single-last item inserted after element, no sub table --- jquery.wrecker.js | 13 ++++++------- jquery.wrecker.min.js | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/jquery.wrecker.js b/jquery.wrecker.js index 51d1655..ac5f1ec 100644 --- a/jquery.wrecker.js +++ b/jquery.wrecker.js @@ -1,5 +1,5 @@ /** - * jQuery Wrecker v0.3 + * jQuery Wrecker v0.4 * Responsive Equal-Height Columns and Rows * http://www.svachon.com/blog/wrecker-responsive-equal-height-columns-and-rows * @@ -118,6 +118,7 @@ $.Wrecker = function() var excludeLastItem = false; if (settings.excludeLastSingleItem && !numCellsIsEven) { excludeLastItem = true; + var lastCell = cells.last().addClass("wrecker-single-last"); } // Add row containers @@ -145,15 +146,13 @@ $.Wrecker = function() } }else{ - $(this).addClass("wrecker-single-last"); + $(this).remove(); } }); - if (excludeLastItem) - { - cells.slice(0,numCells-2).parent().wrapAll('
'); - }else{ - element.addClass("wrecker").css("display", "table"); + element.addClass("wrecker").css("display", "table"); + if (excludeLastItem) { + lastCell.insertAfter(element); } } else diff --git a/jquery.wrecker.min.js b/jquery.wrecker.min.js index 3b50bcc..4ae9c90 100644 --- a/jquery.wrecker.min.js +++ b/jquery.wrecker.min.js @@ -1,9 +1,9 @@ /** - * jQuery Wrecker v0.3 + * jQuery Wrecker v0.4 * Responsive Equal-Height Columns and Rows * http://www.svachon.com/blog/wrecker-responsive-equal-height-columns-and-rows * * Licensed under the MIT license. * Copyright 2013 Steven Vachon */ -!function(a){a.Wrecker=function(){function f(b,d){c=a(d),h(b),a(window).on("resize",j),g()}function g(){for(var c=e.maxColumns,f=a(window).innerWidth(),g=0,h=e.responsiveColumns.length;g=f&&(c=i[j])}c!=b&&c>0&&(d=b,b=c,k())}function h(b){a.support.leadingWhitespace||(b.responsiveColumns=[]),e=a.extend(e,b)}function i(){a(window).off("resize",j),b=0,k(),c.removeData("wrecker")}function j(a){g()}function k(){c.children("div.wrecker-row").children().unwrap();var f=c.children(e.itemSelector);if(b>1){var g=f.length,h=0,i=0,j=g%2===0,k=!1;e.excludeLastSingleItem&&!j&&(k=!0),f.each(function(c){1==++i&&(h=c),!k||c=b||c>=g-1)&&(f.slice(h,c+1).wrapAll('
'),i=0),d<=1&&a(this).addClass("wrecker-cell").css({display:"table-cell",float:"none"})):a(this).addClass("wrecker-single-last")}),k?f.slice(0,g-2).parent().wrapAll('
'):c.addClass("wrecker").css("display","table")}else f.removeClass("wrecker-cell").css({display:"",float:""}),c.removeClass("wrecker").css("display","")}var c,b=0,d=0,e={itemSelector:"",maxColumns:1,responsiveColumns:[],excludeLastSingleItem:!1};this.changeSettings=h,this.destroy=i,this.reload=k,f.apply(this,arguments)},a.fn.wrecker=function(b){var c="string"==typeof b,d=Array.prototype.slice.call(arguments,1);return this.each(function(e){var f=a(this),g=f.data("wrecker");if(c){if(!g)return void console.error('Cannot call Wrecker methods prior to initialization; attempted to call method "'+b+'"');if(!a.isFunction(g[b]))return void console.error('No such Wrecker method "'+b+'"');g[b].apply(g,d)}else b=b||{},g?g.changeSettings(b):f.data("wrecker",new a.Wrecker(b,this))}),this}}(jQuery); \ No newline at end of file +!function(a){a.Wrecker=function(){function f(b,d){c=a(d),h(b),a(window).on("resize",j),g()}function g(){for(var c=e.maxColumns,f=a(window).innerWidth(),g=0,h=e.responsiveColumns.length;g=f&&(c=i[j])}c!=b&&c>0&&(d=b,b=c,k())}function h(b){a.support.leadingWhitespace||(b.responsiveColumns=[]),e=a.extend(e,b)}function i(){a(window).off("resize",j),b=0,k(),c.removeData("wrecker")}function j(a){g()}function k(){c.children("div.wrecker-row").children().unwrap();var f=c.children(e.itemSelector);if(b>1){var g=f.length,h=0,i=0,j=g%2===0,k=!1;if(e.excludeLastSingleItem&&!j){k=!0;var l=f.last().addClass("wrecker-single-last")}f.each(function(c){1==++i&&(h=c),!k||c=b||c>=g-1)&&(f.slice(h,c+1).wrapAll('
'),i=0),d<=1&&a(this).addClass("wrecker-cell").css({display:"table-cell",float:"none"})):a(this).remove()}),c.addClass("wrecker").css("display","table"),k&&l.insertAfter(c)}else f.removeClass("wrecker-cell").css({display:"",float:""}),c.removeClass("wrecker").css("display","")}var c,b=0,d=0,e={itemSelector:"",maxColumns:1,responsiveColumns:[],excludeLastSingleItem:!1};this.changeSettings=h,this.destroy=i,this.reload=k,f.apply(this,arguments)},a.fn.wrecker=function(b){var c="string"==typeof b,d=Array.prototype.slice.call(arguments,1);return this.each(function(e){var f=a(this),g=f.data("wrecker");if(c){if(!g)return void console.error('Cannot call Wrecker methods prior to initialization; attempted to call method "'+b+'"');if(!a.isFunction(g[b]))return void console.error('No such Wrecker method "'+b+'"');g[b].apply(g,d)}else b=b||{},g?g.changeSettings(b):f.data("wrecker",new a.Wrecker(b,this))}),this}}(jQuery); \ No newline at end of file