Guest User

equalHeights

a guest
Oct 1st, 2013
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Make sure Object.create is available in the browser (for our prototypal inheritance)
  2. // Courtesy of Papa Crockford
  3. // Note this is not entirely equal to native Object.create, but compatible with our use-case
  4. if (typeof Object.create !== 'function') {
  5.     Object.create = function (o) {
  6.         function F() {} // optionally move this outside the declaration and into a closure if you need more speed.
  7.         F.prototype = o;
  8.         return new F();
  9.     };
  10. }
  11.  
  12. ;(function($, window, document, undefined) {
  13.   var EqualHeights = {
  14.     init: function(options, elems) {
  15.       var self = this;
  16.       self.elems = elems;
  17.       self.$elems = $(elems);
  18.       self.options = $.extend( {}, $.fn.equalHeights.options, options );
  19.  
  20.       $(window).on('load resize orientationchange', function() {
  21.  
  22.         if (self.checkExecution()) {
  23.  
  24.           // We need to reset the heights no matter what
  25.           self.resetHeights();
  26.  
  27.           self.hh = 0;
  28.           self.$elems.each(function(){
  29.             if ($(this).innerHeight() > self.hh) {
  30.               self.hh = $(this).innerHeight();
  31.             }
  32.           });
  33.           self.setHeights(self.hh);
  34.         }
  35.         else {
  36.           self.resetHeights();
  37.         }
  38.       });
  39.     },
  40.  
  41.     // Based on min and max values we figure out if we should execute
  42.     checkExecution: function() {
  43.       var self = this;
  44.       var ww = $(window).width();
  45.       return (ww >= self.options.min && ww < self.options.max);
  46.     },
  47.  
  48.     resetHeights: function() {
  49.       var self = this;
  50.       var height = {};
  51.       height[self.options.property] = '';
  52.       self.$elems.css(height);
  53.     },
  54.  
  55.     setHeights: function(hh) {
  56.       var self = this;
  57.       var height = {};
  58.       height[self.options.property] = hh;
  59.       self.$elems.css(height);
  60.     }
  61.  
  62.   };
  63.  
  64.   $.fn.equalHeights = function(options) {
  65.     var equalHeights = Object.create(EqualHeights);
  66.     equalHeights.init(options, this);
  67.     return this;
  68.   };
  69.  
  70.   $.fn.equalHeights.options = {
  71.     min: 0,
  72.     max: 10000,
  73.     property: 'min-height'
  74.   };
  75.  
  76. })(jQuery, window, document);
Advertisement
Add Comment
Please, Sign In to add comment