如何使用jQuery制作相同高度的DIV

时间:2015-03-09 12:02:13

标签: jquery css

我正在尝试制作一个循环遍历所有<div class="check-js"></div>的jQuery函数,比较高度以找出最高的,并将它们全部设置在与最高的相同的高度,但这似乎不是工作。这可能是什么问题?

$(document).ready(function() {
                $('.check-js').each(function() {
                    alert($(this).index);
                    var aux = 0;
                    var max = 0;
                    aux = $(this).style.height;
                    aux.replace(/\D/g,'');
                    alert(max);
                    if (Math.max(aux, max)==aux){
                        max = aux;
                    }
                });
            });

这还没有完成我没有添加更改高度的指令,因为我无法循环<div> s,max的警报没有弹出

2 个答案:

答案 0 :(得分:4)

你需要在每次迭代中使用共享变量max否则max的值将被重置...也是为了获得元素的高度.height()

$(document).ready(function () {
    //shared variable
    var max = 0,
        $els = $('.check-js');
    $els.each(function () {
        max = Math.max($(this).height(), max); //use height method from jQuery
    });

    $els.height(max)
});

演示:Fiddle

答案 1 :(得分:1)

首先,因为您正在循环使用它们,所以如果没有each范围之外的变量,则无法比较它们。下面是一个简单的方法来找到每个循环/函数jQuerys的最高点:

function findHighest(jQueryObjects){
    var highest = 0;
    jQueryObjects.each(function(){
        var localHeight = $(this).innerHeight();
        if(localHeight > highest){
            highest = localHeight;
        }
    });
    return highest;
}

现在你可以$('.check-js').css("height", findHighest($('.check-js')));对每个高度应用最高的高度(尽管更好首先在变量中声明它:var height = findHighest($('.check-js')); $('.check-js').css("height", height););