jQuery - 在.each循环中重置变量值

时间:2011-09-16 14:43:57

标签: jquery

我有以下脚本:

var height = 0;
$('.scroller').each(function() {

    $(this).children('div').each(function() {

        if (height < $(this).height()) {
            height = $(this).height();
        }

    });
    $(this).css("height", height + "px");

});

它的作用:

  • 遍历每个children div div
  • 中的每个.scroller
  • height < $(this).height() =如果当前循环div的高度大于0,则将此div的高度设置为new value of the height variable
  • 这种方式是在每个.scroller div
  • 中找到最高的div元素
  • 比,高度(最高元素的高度)设置为.scroller div

问题:

  • 如果第一个'.scroller'中的任何元素高于第二个.scroller中的任何元素,则将高度(第一个.scroller中的最高元素)设置为第二个scroller - 例如:http://jsfiddle.net/MrTest/7jAAG/20/

第一个.scroller中的元素是否高于第二个.scroller中的元素,一切正常 - 例如:http://jsfiddle.net/MrTest/7jAAG/16/

我认为问题在于设置height var - 如何在第二次0循环之前将此值重置为.scroller

3 个答案:

答案 0 :(得分:5)

我可能会误解,但你不能这样做:

$('.scroller').each(function() {
    var height = 0;
    $(this).children('div').each(function() {

        if (height < $(this).height()) {
            height = $(this).height();
        }

    });
    $(this).css("height", height + "px");

});

然后,height变量将针对循环播放的DOM中.scroller的每个实例重置。

答案 1 :(得分:2)

我认为这可能就是你所追求的。 http://jsfiddle.net/7jAAG/30/

height的每次迭代设置.scroller

$('.scroller').each(function() {
    var height = 0;
    $(this).children('div').each(function() {

        if (height < $(this).height()) {
            height = $(this).height();
        }

    });
    $(this).css("height", height + "px");
});

答案 2 :(得分:0)

下面是如何在每次迭代之间将高度设置为0。我不知道结果是否是你真正期望的结果。

http://jsfiddle.net/7jAAG/24/

var height = 0;
$('.scroller').each(function() {

    $(this).children('div').each(function() {

        if (height < $(this).height()) {
            height = $(this).height();
        }

    });
    $(this).css("height", height + "px");
    height = 0;
});