2011-09-16 31 views
2

我有以下腳本: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每個.scroller
  • height < $(this).height()內部= IF當前環狀高度div大於0它將此div的高度設置爲new value of the height variable
  • 這種方式是找到最高的div元素在每個.scroller DIV
  • 比,高度(最高元素的高度)設置爲.scroller DIV

問題:

  • 如果第一個'.scroller'中的任何元素高於第二個.scroller中的ANY元素,則它將高度(第一個.scroller中的最高元素)設置爲第二個scroller - 例如:http://jsfiddle.net/MrTest/7jAAG/20/

是元素在第一.scroller並不比第二.scroller一切元素更高的正常工作 - 例如:http://jsfiddle.net/MrTest/7jAAG/16/

我認爲這個問題是設置height var - 我怎麼能重置這個值到0之前去循環雖然第二.scroller

回答

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變量隨後會重置針對通過循環的.scroller DOM中的每個實例。

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; 
}); 
+0

是的,這是行不通的!謝謝。 – Iladarsda

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"); 
});