123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- ;(function ($, window, document, undefined) {
- 'use strict';
- Foundation.libs.equalizer = {
- name : 'equalizer',
- version : '5.2.2',
- settings : {
- use_tallest: true,
- before_height_change: $.noop,
- after_height_change: $.noop
- },
- 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'),
- firstTopOffset = vals.first().offset().top,
- settings = equalizer.data(this.attr_name(true)+'-init');
- if (vals.length === 0) return;
- settings.before_height_change();
- equalizer.trigger('before-height-change');
- vals.height('inherit');
- vals.each(function(){
- var el = $(this);
- if (el.offset().top !== firstTopOffset) {
- isStacked = true;
- }
- });
- if (isStacked) return;
- var heights = vals.map(function(){ return $(this).outerHeight() }).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');
- },
- 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, this, this.document));
|