From 8c573aa29cd16a409789d4af1398868510538426 Mon Sep 17 00:00:00 2001 From: Jaime Herencia Enjuto Date: Wed, 10 Jul 2013 19:31:18 +0200 Subject: [PATCH 1/4] Added option to equalize children in groups. --- README.md | 3 +++ js/equalize.js | 25 +++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 03f886d..2668d54 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,9 @@ This advanced usage is for dynamic instances where equalize is ran after element Equalize the .parent's child element. See @larsbo's example.
$('.parent').equalize({children: 'p'}); // equalize height of paragraphs within .parent
+You can even evaluate your children in groups: +
$('.parent').equalize({children: 'p', group: 3}); // equalize height of paragraphs in groups of 3 elements wiithin .parent
+ ## Examples diff --git a/js/equalize.js b/js/equalize.js index 1939680..c12cfb6 100644 --- a/js/equalize.js +++ b/js/equalize.js @@ -31,6 +31,7 @@ var $containers = this, // this is the jQuery object children = false, reset = false, + group = false, equalize, type; @@ -39,6 +40,7 @@ equalize = options.equalize || 'height'; children = options.children || false; reset = options.reset || false; + group = options.group || false; } else { // otherwise, a string was passed in or default to height equalize = options || 'height'; } @@ -51,17 +53,24 @@ return $containers.each(function() { // when children exist, equalize the passed in child elements, otherwise equalize the children var $children = (children) ? $(this).find(children) : $(this).children(), + iterations = (group) ? Math.floor($children.length / group) : 1, + groupSize = (group) ? group : $children.length, max = 0; // reset for each container - $children.each(function() { - var $element = $(this), - value; - if (reset) { $element.css(type, ''); } // remove existing height/width dimension - value = $element[equalize](); // call height(), outerHeight(), etc. - if (value > max) { max = value; } // update max - }); + for (var i = 0; i < iterations; i++) { + max = 0; + console.log(i * groupSize); + console.log($children.slice(i * groupSize, (i * groupSize) + groupSize)); + $children.slice(i * groupSize, (i * groupSize) + groupSize).each(function() { + var $element = $(this), + value; + if (reset) { $element.css(type, ''); } // remove existing height/width dimension + value = $element[equalize](); // call height(), outerHeight(), etc. + if (value > max) { max = value; } // update max + }); - $children.css(type, max +'px'); // add CSS to children + $children.slice(i * groupSize, (i * groupSize) + groupSize).css(type, max +'px'); // add CSS to children + } }); }; From b992b85c7d2d5c758657e7cead09ac863c5683a7 Mon Sep 17 00:00:00 2001 From: Jaime Herencia Enjuto Date: Wed, 10 Jul 2013 19:40:46 +0200 Subject: [PATCH 2/4] Added minified version. --- js/equalize.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/equalize.min.js b/js/equalize.min.js index e5df45d..f43a083 100644 --- a/js/equalize.min.js +++ b/js/equalize.min.js @@ -6,4 +6,4 @@ * Page: http://tsvensen.github.com/equalize.js * Repo: https://github.com/tsvensen/equalize.js/ */ -(function(b){b.fn.equalize=function(a){var d=!1,g=!1,c,e;b.isPlainObject(a)?(c=a.equalize||"height",d=a.children||!1,g=a.reset||!1):c=a||"height";if(!b.isFunction(b.fn[c]))return!1;e=0f&&(f=a)});a.css(e,f+"px")})}})(jQuery); \ No newline at end of file +(function(i){i.fn.equalize=function(e){var n,t,h=this,c=!1,s=!1,l=!1;return i.isPlainObject(e)?(n=e.equalize||"height",c=e.children||!1,s=e.reset||!1,l=e.group||!1):n=e||"height",i.isFunction(i.fn[n])?(t=n.indexOf("eight")>0?"height":"width",h.each(function(){for(var e=c?i(this).find(c):i(this).children(),h=l?Math.floor(e.length/l):1,o=l?l:e.length,r=0,f=0;h>f;f++)r=0,console.log(f*o),console.log(e.slice(f*o,f*o+o)),e.slice(f*o,f*o+o).each(function(){var e,h=i(this);s&&h.css(t,""),e=h[n](),e>r&&(r=e)}),e.slice(f*o,f*o+o).css(t,r+"px")})):!1}})(jQuery); From 5fde138fbf124ce7d7c931b296989001400fe1a4 Mon Sep 17 00:00:00 2001 From: Jaime Herencia Enjuto Date: Wed, 10 Jul 2013 19:56:13 +0200 Subject: [PATCH 3/4] Removed console.log calls. --- js/equalize.js | 2 -- js/equalize.min.js | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/js/equalize.js b/js/equalize.js index c12cfb6..de4a652 100644 --- a/js/equalize.js +++ b/js/equalize.js @@ -59,8 +59,6 @@ for (var i = 0; i < iterations; i++) { max = 0; - console.log(i * groupSize); - console.log($children.slice(i * groupSize, (i * groupSize) + groupSize)); $children.slice(i * groupSize, (i * groupSize) + groupSize).each(function() { var $element = $(this), value; diff --git a/js/equalize.min.js b/js/equalize.min.js index f43a083..56de5dc 100644 --- a/js/equalize.min.js +++ b/js/equalize.min.js @@ -6,4 +6,4 @@ * Page: http://tsvensen.github.com/equalize.js * Repo: https://github.com/tsvensen/equalize.js/ */ -(function(i){i.fn.equalize=function(e){var n,t,h=this,c=!1,s=!1,l=!1;return i.isPlainObject(e)?(n=e.equalize||"height",c=e.children||!1,s=e.reset||!1,l=e.group||!1):n=e||"height",i.isFunction(i.fn[n])?(t=n.indexOf("eight")>0?"height":"width",h.each(function(){for(var e=c?i(this).find(c):i(this).children(),h=l?Math.floor(e.length/l):1,o=l?l:e.length,r=0,f=0;h>f;f++)r=0,console.log(f*o),console.log(e.slice(f*o,f*o+o)),e.slice(f*o,f*o+o).each(function(){var e,h=i(this);s&&h.css(t,""),e=h[n](),e>r&&(r=e)}),e.slice(f*o,f*o+o).css(t,r+"px")})):!1}})(jQuery); +(function(i){i.fn.equalize=function(e){var n,t,h=this,c=!1,s=!1,r=!1;return i.isPlainObject(e)?(n=e.equalize||"height",c=e.children||!1,s=e.reset||!1,r=e.group||!1):n=e||"height",i.isFunction(i.fn[n])?(t=n.indexOf("eight")>0?"height":"width",h.each(function(){for(var e=c?i(this).find(c):i(this).children(),h=r?Math.floor(e.length/r):1,f=r?r:e.length,l=0,u=0;h>u;u++)l=0,e.slice(u*f,u*f+f).each(function(){var e,h=i(this);s&&h.css(t,""),e=h[n](),e>l&&(l=e)}),e.slice(u*f,u*f+f).css(t,l+"px")})):!1}})(jQuery); From 4745b36d1b2e61bd7611b3a13a1009c706ca2d5f Mon Sep 17 00:00:00 2001 From: Jaime Herencia Enjuto Date: Wed, 16 Oct 2013 16:18:06 +0200 Subject: [PATCH 4/4] Fixed group option when element number is not multiple of group size. --- README.md | 2 +- js/equalize.js | 2 +- js/equalize.min.js | 10 +--------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 2668d54..f2243ba 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Equalize the .parent's child element. See @larsbo's 0?"height":"width",h.each(function(){for(var e=c?i(this).find(c):i(this).children(),h=r?Math.floor(e.length/r):1,f=r?r:e.length,l=0,u=0;h>u;u++)l=0,e.slice(u*f,u*f+f).each(function(){var e,h=i(this);s&&h.css(t,""),e=h[n](),e>l&&(l=e)}),e.slice(u*f,u*f+f).css(t,l+"px")})):!1}})(jQuery); +(function(i){i.fn.equalize=function(e){var n,t,h=this,c=!1,s=!1,r=!1;return i.isPlainObject(e)?(n=e.equalize||"height",c=e.children||!1,s=e.reset||!1,r=e.group||!1):n=e||"height",i.isFunction(i.fn[n])?(t=n.indexOf("eight")>0?"height":"width",h.each(function(){for(var e=c?i(this).find(c):i(this).children(),h=r?Math.ceil(e.length/r):1,l=r?r:e.length,u=0,a=0;h>a;a++)u=0,e.slice(a*l,a*l+l).each(function(){var e,h=i(this);s&&h.css(t,""),e=h[n](),e>u&&(u=e)}),e.slice(a*l,a*l+l).css(t,u+"px")})):!1}})(jQuery); \ No newline at end of file