treehouse : what would you like to learn today?
Web Design Web Development iOS Development

Equalize Heights of Divs

Last updated on:

var maxHeight = 0;

$("div").each(function(){
   if ($(this).height() > maxHeight) { maxHeight = $(this).height(); }
});

$("div").height(maxHeight);
View Comments

Comments

  1. Sgobin
    Permalink to comment#

    I don’t know why. it work offline but when I put the site to the server it make the height small than the content. And sometimes it change the height with browsers reload in Safari or Firefox.

    • Ramil
      Permalink to comment#

      I think, that’s because your page is not fully loaded. Try to start this code after window is loaded.

  2. Interestingly enough, I experienced the same issue. Worked great on the hard drive, but when I uploaded the files to the server, for some reason the script didn’t work in the same manner. It actually set the height for each div to the height of the first.

  3. Josh
    Permalink to comment#

    this is sooo good! thank you!

    • Josh
      Permalink to comment#

      …actually I do have a small question. How do you implement this on multiple divs?

      for example I have 3 sets of 2 divs on a page. I only want the sets to equalize, not all divs on the page. I don’t mind the using multiple classes but whats the shortest way to write it.

      div.equalize-1, div.equalize-2, div.equalize-3 are my classes.

      I assigned these classes to each set of divs I want to be equalized.

      Any tips would be great thanks.

  4. Chris
    Permalink to comment#
    // Plugin
    $.fn.equalize = function() {
    	var maxHeight = 0;
    	
    	return this.each(function(){
    		var $this = $(this);
    		
    		if ($(this).height() > maxHeight) { maxHeight = $(this).height(); }
    		
    		$this.height(maxHeight);
            });
    };
    
    
    // Use generic class 
    $('.equalize').equalize();
    
    OR
    
    $('div.equalize-1, div.equalize-2, div.equalize-3').equalize();
    
    • Chris
      Permalink to comment#

      Woops, gotta replace the following line:

      if ($this.height() > maxHeight) { maxHeight = $this.height(); }

      Forgot to use the “$this” var!

  5. Your plugin version doesn’t work quite right I think – it appears to be applying the current maxHeight BEFORE it has looped through all the selectors, so its only correct for things after the tallest one.
    The original version is fine, though

  6. Permalink to comment#

    Thanks Chris this is so easy I would have invented it myself

  7. Permalink to comment#

    This is really important stuff to make the layout work. Sorry for being so new to JS, but I have two divs I need to equalize to the same height. In CSS, I call my div ids #slides and #product. Do I just insert that in the parentheses like this? It doesn’t seem to do anything.

    Thank you,

    var maxHeight = 0;

    $(‘#slides’).each(function(){
    if ($(this).height() > maxHeight) { maxHeight = $(this).height(); }
    });

    $(‘#product’).height(maxHeight);

  8. Permalink to comment#

    Could someone help me to understand how to fill in the blanks? I have two divs side-by-side: #slideshow and #menuVertical that I wrap in .equalize. I just can’t figure out where to put these in the plugin.

    Thanks Much.

  9. Permalink to comment#

    Will this work on resize of the browser?

Leave a Comment

Use markdown or basic HTML and be nice.