我有以下脚本:

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

最佳答案

我可能会误会您,但您是否可以这样做:

$('.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实例重置。

关于jquery - jQuery-在.each循环内重置变量值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7446398/

10-09 14:14