<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="he">
	<id>https://www.maccabipedia.co.il/index.php?action=history&amp;feed=atom&amp;title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99%3AMatchHeight.js</id>
	<title>מדיה ויקי:MatchHeight.js - היסטוריית גרסאות</title>
	<link rel="self" type="application/atom+xml" href="https://www.maccabipedia.co.il/index.php?action=history&amp;feed=atom&amp;title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99%3AMatchHeight.js"/>
	<link rel="alternate" type="text/html" href="https://www.maccabipedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:MatchHeight.js&amp;action=history"/>
	<updated>2026-04-25T02:54:03Z</updated>
	<subtitle>היסטוריית הגרסאות של הדף הזה בוויקי</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://www.maccabipedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:MatchHeight.js&amp;diff=70099&amp;oldid=prev</id>
		<title>אורן המתעפץ: יצירת דף עם התוכן &quot;/** * jquery-match-height master by @liabru * http://brm.io/jquery-match-height/ * License: MIT */  ;(function(factory) { // eslint-disable-line no-extra-semi...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.maccabipedia.co.il/index.php?title=%D7%9E%D7%93%D7%99%D7%94_%D7%95%D7%99%D7%A7%D7%99:MatchHeight.js&amp;diff=70099&amp;oldid=prev"/>
		<updated>2020-11-16T08:39:31Z</updated>

		<summary type="html">&lt;p&gt;יצירת דף עם התוכן &amp;quot;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;* * jquery-match-height master by @liabru * http://brm.io/jquery-match-height/ * License: MIT: &lt;/span&gt;  ;(function(factory) { // eslint-disable-line no-extra-semi...&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;דף חדש&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
* jquery-match-height master by @liabru&lt;br /&gt;
* http://brm.io/jquery-match-height/&lt;br /&gt;
* License: MIT&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
;(function(factory) { // eslint-disable-line no-extra-semi&lt;br /&gt;
    'use strict';&lt;br /&gt;
    if (typeof define === 'function' &amp;amp;&amp;amp; define.amd) {&lt;br /&gt;
        // AMD&lt;br /&gt;
        define(['jquery'], factory);&lt;br /&gt;
    } else if (typeof module !== 'undefined' &amp;amp;&amp;amp; module.exports) {&lt;br /&gt;
        // CommonJS&lt;br /&gt;
        module.exports = factory(require('jquery'));&lt;br /&gt;
    } else {&lt;br /&gt;
        // Global&lt;br /&gt;
        factory(jQuery);&lt;br /&gt;
    }&lt;br /&gt;
})(function($) {&lt;br /&gt;
    /*&lt;br /&gt;
    *  internal&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    var _previousResizeWidth = -1,&lt;br /&gt;
        _updateTimeout = -1;&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  _parse&lt;br /&gt;
    *  value parse utility function&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    var _parse = function(value) {&lt;br /&gt;
        // parse value and convert NaN to 0&lt;br /&gt;
        return parseFloat(value) || 0;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  _rows&lt;br /&gt;
    *  utility function returns array of jQuery selections representing each row&lt;br /&gt;
    *  (as displayed after float wrapping applied by browser)&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    var _rows = function(elements) {&lt;br /&gt;
        var tolerance = 1,&lt;br /&gt;
            $elements = $(elements),&lt;br /&gt;
            lastTop = null,&lt;br /&gt;
            rows = [];&lt;br /&gt;
&lt;br /&gt;
        // group elements by their top position&lt;br /&gt;
        $elements.each(function(){&lt;br /&gt;
            var $that = $(this),&lt;br /&gt;
                top = $that.offset().top - _parse($that.css('margin-top')),&lt;br /&gt;
                lastRow = rows.length &amp;gt; 0 ? rows[rows.length - 1] : null;&lt;br /&gt;
&lt;br /&gt;
            if (lastRow === null) {&lt;br /&gt;
                // first item on the row, so just push it&lt;br /&gt;
                rows.push($that);&lt;br /&gt;
            } else {&lt;br /&gt;
                // if the row top is the same, add to the row group&lt;br /&gt;
                if (Math.floor(Math.abs(lastTop - top)) &amp;lt;= tolerance) {&lt;br /&gt;
                    rows[rows.length - 1] = lastRow.add($that);&lt;br /&gt;
                } else {&lt;br /&gt;
                    // otherwise start a new row group&lt;br /&gt;
                    rows.push($that);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // keep track of the last row top&lt;br /&gt;
            lastTop = top;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        return rows;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  _parseOptions&lt;br /&gt;
    *  handle plugin options&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    var _parseOptions = function(options) {&lt;br /&gt;
        var opts = {&lt;br /&gt;
            byRow: true,&lt;br /&gt;
            property: 'height',&lt;br /&gt;
            target: null,&lt;br /&gt;
            remove: false&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        if (typeof options === 'object') {&lt;br /&gt;
            return $.extend(opts, options);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (typeof options === 'boolean') {&lt;br /&gt;
            opts.byRow = options;&lt;br /&gt;
        } else if (options === 'remove') {&lt;br /&gt;
            opts.remove = true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return opts;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  matchHeight&lt;br /&gt;
    *  plugin definition&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    var matchHeight = $.fn.matchHeight = function(options) {&lt;br /&gt;
        var opts = _parseOptions(options);&lt;br /&gt;
&lt;br /&gt;
        // handle remove&lt;br /&gt;
        if (opts.remove) {&lt;br /&gt;
            var that = this;&lt;br /&gt;
&lt;br /&gt;
            // remove fixed height from all selected elements&lt;br /&gt;
            this.css(opts.property, '');&lt;br /&gt;
&lt;br /&gt;
            // remove selected elements from all groups&lt;br /&gt;
            $.each(matchHeight._groups, function(key, group) {&lt;br /&gt;
                group.elements = group.elements.not(that);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // TODO: cleanup empty groups&lt;br /&gt;
&lt;br /&gt;
            return this;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (this.length &amp;lt;= 1 &amp;amp;&amp;amp; !opts.target) {&lt;br /&gt;
            return this;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // keep track of this group so we can re-apply later on load and resize events&lt;br /&gt;
        matchHeight._groups.push({&lt;br /&gt;
            elements: this,&lt;br /&gt;
            options: opts&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // match each element's height to the tallest element in the selection&lt;br /&gt;
        matchHeight._apply(this, opts);&lt;br /&gt;
&lt;br /&gt;
        return this;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  plugin global options&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    matchHeight.version = 'master';&lt;br /&gt;
    matchHeight._groups = [];&lt;br /&gt;
    matchHeight._throttle = 80;&lt;br /&gt;
    matchHeight._maintainScroll = false;&lt;br /&gt;
    matchHeight._beforeUpdate = null;&lt;br /&gt;
    matchHeight._afterUpdate = null;&lt;br /&gt;
    matchHeight._rows = _rows;&lt;br /&gt;
    matchHeight._parse = _parse;&lt;br /&gt;
    matchHeight._parseOptions = _parseOptions;&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  matchHeight._apply&lt;br /&gt;
    *  apply matchHeight to given elements&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    matchHeight._apply = function(elements, options) {&lt;br /&gt;
        var opts = _parseOptions(options),&lt;br /&gt;
            $elements = $(elements),&lt;br /&gt;
            rows = [$elements];&lt;br /&gt;
&lt;br /&gt;
        // take note of scroll position&lt;br /&gt;
        var scrollTop = $(window).scrollTop(),&lt;br /&gt;
            htmlHeight = $('html').outerHeight(true);&lt;br /&gt;
&lt;br /&gt;
        // get hidden parents&lt;br /&gt;
        var $hiddenParents = $elements.parents().filter(':hidden');&lt;br /&gt;
&lt;br /&gt;
        // cache the original inline style&lt;br /&gt;
        $hiddenParents.each(function() {&lt;br /&gt;
            var $that = $(this);&lt;br /&gt;
            $that.data('style-cache', $that.attr('style'));&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // temporarily must force hidden parents visible&lt;br /&gt;
        $hiddenParents.css('display', 'block');&lt;br /&gt;
&lt;br /&gt;
        // get rows if using byRow, otherwise assume one row&lt;br /&gt;
        if (opts.byRow &amp;amp;&amp;amp; !opts.target) {&lt;br /&gt;
&lt;br /&gt;
            // must first force an arbitrary equal height so floating elements break evenly&lt;br /&gt;
            $elements.each(function() {&lt;br /&gt;
                var $that = $(this),&lt;br /&gt;
                    display = $that.css('display');&lt;br /&gt;
&lt;br /&gt;
                // temporarily force a usable display value&lt;br /&gt;
                if (display !== 'inline-block' &amp;amp;&amp;amp; display !== 'flex' &amp;amp;&amp;amp; display !== 'inline-flex') {&lt;br /&gt;
                    display = 'block';&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // cache the original inline style&lt;br /&gt;
                $that.data('style-cache', $that.attr('style'));&lt;br /&gt;
&lt;br /&gt;
                $that.css({&lt;br /&gt;
                    'display': display,&lt;br /&gt;
                    'padding-top': '0',&lt;br /&gt;
                    'padding-bottom': '0',&lt;br /&gt;
                    'margin-top': '0',&lt;br /&gt;
                    'margin-bottom': '0',&lt;br /&gt;
                    'border-top-width': '0',&lt;br /&gt;
                    'border-bottom-width': '0',&lt;br /&gt;
                    'height': '100px',&lt;br /&gt;
                    'overflow': 'hidden'&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // get the array of rows (based on element top position)&lt;br /&gt;
            rows = _rows($elements);&lt;br /&gt;
&lt;br /&gt;
            // revert original inline styles&lt;br /&gt;
            $elements.each(function() {&lt;br /&gt;
                var $that = $(this);&lt;br /&gt;
                $that.attr('style', $that.data('style-cache') || '');&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $.each(rows, function(key, row) {&lt;br /&gt;
            var $row = $(row),&lt;br /&gt;
                targetHeight = 0;&lt;br /&gt;
&lt;br /&gt;
            if (!opts.target) {&lt;br /&gt;
                // skip apply to rows with only one item&lt;br /&gt;
                if (opts.byRow &amp;amp;&amp;amp; $row.length &amp;lt;= 1) {&lt;br /&gt;
                    $row.css(opts.property, '');&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // iterate the row and find the max height&lt;br /&gt;
                $row.each(function(){&lt;br /&gt;
                    var $that = $(this),&lt;br /&gt;
                        style = $that.attr('style'),&lt;br /&gt;
                        display = $that.css('display');&lt;br /&gt;
&lt;br /&gt;
                    // temporarily force a usable display value&lt;br /&gt;
                    if (display !== 'inline-block' &amp;amp;&amp;amp; display !== 'flex' &amp;amp;&amp;amp; display !== 'inline-flex') {&lt;br /&gt;
                        display = 'block';&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    // ensure we get the correct actual height (and not a previously set height value)&lt;br /&gt;
                    var css = { 'display': display };&lt;br /&gt;
                    css[opts.property] = '';&lt;br /&gt;
                    $that.css(css);&lt;br /&gt;
&lt;br /&gt;
                    // find the max height (including padding, but not margin)&lt;br /&gt;
                    if ($that.outerHeight(false) &amp;gt; targetHeight) {&lt;br /&gt;
                        targetHeight = $that.outerHeight(false);&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    // revert styles&lt;br /&gt;
                    if (style) {&lt;br /&gt;
                        $that.attr('style', style);&lt;br /&gt;
                    } else {&lt;br /&gt;
                        $that.css('display', '');&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            } else {&lt;br /&gt;
                // if target set, use the height of the target element&lt;br /&gt;
                targetHeight = opts.target.outerHeight(false);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // iterate the row and apply the height to all elements&lt;br /&gt;
            $row.each(function(){&lt;br /&gt;
                var $that = $(this),&lt;br /&gt;
                    verticalPadding = 0;&lt;br /&gt;
&lt;br /&gt;
                // don't apply to a target&lt;br /&gt;
                if (opts.target &amp;amp;&amp;amp; $that.is(opts.target)) {&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // handle padding and border correctly (required when not using border-box)&lt;br /&gt;
                if ($that.css('box-sizing') !== 'border-box') {&lt;br /&gt;
                    verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width'));&lt;br /&gt;
                    verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom'));&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // set the height (accounting for padding and border)&lt;br /&gt;
                $that.css(opts.property, (targetHeight - verticalPadding) + 'px');&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // revert hidden parents&lt;br /&gt;
        $hiddenParents.each(function() {&lt;br /&gt;
            var $that = $(this);&lt;br /&gt;
            $that.attr('style', $that.data('style-cache') || null);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // restore scroll position if enabled&lt;br /&gt;
        if (matchHeight._maintainScroll) {&lt;br /&gt;
            $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return this;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  matchHeight._applyDataApi&lt;br /&gt;
    *  applies matchHeight to all elements with a data-match-height attribute&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    matchHeight._applyDataApi = function() {&lt;br /&gt;
        var groups = {};&lt;br /&gt;
&lt;br /&gt;
        // generate groups by their groupId set by elements using data-match-height&lt;br /&gt;
        $('[data-match-height], [data-mh]').each(function() {&lt;br /&gt;
            var $this = $(this),&lt;br /&gt;
                groupId = $this.attr('data-mh') || $this.attr('data-match-height');&lt;br /&gt;
&lt;br /&gt;
            if (groupId in groups) {&lt;br /&gt;
                groups[groupId] = groups[groupId].add($this);&lt;br /&gt;
            } else {&lt;br /&gt;
                groups[groupId] = $this;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // apply matchHeight to each group&lt;br /&gt;
        $.each(groups, function() {&lt;br /&gt;
            this.matchHeight(true);&lt;br /&gt;
        });&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  matchHeight._update&lt;br /&gt;
    *  updates matchHeight on all current groups with their correct options&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    var _update = function(event) {&lt;br /&gt;
        if (matchHeight._beforeUpdate) {&lt;br /&gt;
            matchHeight._beforeUpdate(event, matchHeight._groups);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $.each(matchHeight._groups, function() {&lt;br /&gt;
            matchHeight._apply(this.elements, this.options);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        if (matchHeight._afterUpdate) {&lt;br /&gt;
            matchHeight._afterUpdate(event, matchHeight._groups);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    matchHeight._update = function(throttle, event) {&lt;br /&gt;
        // prevent update if fired from a resize event&lt;br /&gt;
        // where the viewport width hasn't actually changed&lt;br /&gt;
        // fixes an event looping bug in IE8&lt;br /&gt;
        if (event &amp;amp;&amp;amp; event.type === 'resize') {&lt;br /&gt;
            var windowWidth = $(window).width();&lt;br /&gt;
            if (windowWidth === _previousResizeWidth) {&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            _previousResizeWidth = windowWidth;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // throttle updates&lt;br /&gt;
        if (!throttle) {&lt;br /&gt;
            _update(event);&lt;br /&gt;
        } else if (_updateTimeout === -1) {&lt;br /&gt;
            _updateTimeout = setTimeout(function() {&lt;br /&gt;
                _update(event);&lt;br /&gt;
                _updateTimeout = -1;&lt;br /&gt;
            }, matchHeight._throttle);&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    *  bind events&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    // apply on DOM ready event&lt;br /&gt;
    $(matchHeight._applyDataApi);&lt;br /&gt;
&lt;br /&gt;
    // use on or bind where supported&lt;br /&gt;
    var on = $.fn.on ? 'on' : 'bind';&lt;br /&gt;
&lt;br /&gt;
    // update heights on load and resize events&lt;br /&gt;
    $(window)[on]('load', function(event) {&lt;br /&gt;
        matchHeight._update(false, event);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // throttled update heights on resize events&lt;br /&gt;
    $(window)[on]('resize orientationchange', function(event) {&lt;br /&gt;
        matchHeight._update(true, event);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>אורן המתעפץ</name></author>
	</entry>
</feed>