最短列jquery上的equalHeight

时间:2014-06-11 18:09:07

标签: jquery

我有一个jquery实现在最高的列上有equalHeight,但在这种情况下我不希望列与最高的列匹配。这个想法是让col2和col3匹配col1的高度。我有一个溢出:自动应用于所有列,因此会出现一个滚动条。

参见demo,但是这个equalHeight匹配最高的列,但我想反过来发生 http://jsfiddle.net/L7JvD/2/

   $.fn.equalHeightify = function() {
        var highest = 0; // keep track of the greatest height
        $(this).each(function() { // for each element
            if ($(this).height() > highest) { // compare heights
                highest = $(this).height();
            }
        });
        $(this).height(highest); // set new height
    }

    $(document).ready(function() {
        $('.column').equalHeightify();
    });

1 个答案:

答案 0 :(得分:2)

编辑:根据更新后的问题,以下内容更符合您的需求。

$.fn.equalHeightify = function(ColNumber) {
    var targetCol = ColNumber - 1; // Substracing one because .each() uses a zero-based index, so Column 1 = index 0, etc.
    var targetHeight = $(this).eq(targetCol).height(); // grab the target item's height
    $(this).each(function(index) { // for each element
        if (index != targetCol) // find all items besides the target column and set their height to the target column's height
            $(this).height(targetHeight);
    });
}

$(document).ready(function() {
    $('.column').equalHeightify(2);
});

此修订版本允许您指定要用作目标的列号,以反映所有其他列的大小。要在jsFiddle中进行测试,请将equalHeightify()来电中的号码更改为您想要的号码。

更新了jsFiddle:http://jsfiddle.net/5N42p/4/

<击> 很简单;更改逻辑以设置初始最低值,然后将所有后续列高度与之比较 - 每当找到新的较低值时,将值重置为其高度:

$.fn.equalHeightify = function () {
    var lowest; // keep track of the lowest height
    $(this).each(function (index) { // for each element
        if (index == 0) // set the height of the first item as our initial "lowest"
            lowest = $(this).height();
        else if ($(this).height() < lowest) // compare all other's heights to "lowest" and reset "lowest" if a shorter is found
            lowest = $(this).height();
    });
    $(this).height(lowest); // set new height
}

jsFiddle:http://jsfiddle.net/e9v3n/2/