1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- ;(function ($, window, document, undefined) {
- 'use strict';
- Foundation.libs.equalizer = {
- name : 'equalizer',
- version : '5.3.3',
- settings : {
- use_tallest: true,
- before_height_change: $.noop,
- after_height_change: $.noop,
- equalize_on_stack: false
- },
- init : function (scope, method, options) {
- Foundation.inherit(this, 'image_loaded');
- this.bindings(method, options);
- this.reflow();
- },
- events : function () {
- this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function(e){
- this.reflow();
- }.bind(this));
- },
- equalize: function(equalizer) {
- var isStacked = false,
- vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
- settings = equalizer.data(this.attr_name(true)+'-init');
- if (vals.length === 0) return;
- var firstTopOffset = vals.first().offset().top;
- settings.before_height_change();
- equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');
- vals.height('inherit');
- vals.each(function(){
- var el = $(this);
- if (el.offset().top !== firstTopOffset) {
- isStacked = true;
- }
- });
- if (settings.equalize_on_stack === false) {
- if (isStacked) return;
- };
- var heights = vals.map(function(){ return $(this).outerHeight(false) }).get();
- if (settings.use_tallest) {
- var max = Math.max.apply(null, heights);
- vals.css('height', max);
- } else {
- var min = Math.min.apply(null, heights);
- vals.css('height', min);
- }
- settings.after_height_change();
- equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');
- },
- reflow : function () {
- var self = this;
- this.S('[' + this.attr_name() + ']', this.scope).each(function(){
- var $eq_target = $(this);
- self.image_loaded(self.S('img', this), function(){
- self.equalize($eq_target)
- });
- });
- }
- };
- })(jQuery, window, window.document);
|