2014-02-24 34 views
0

我有7分div的,每類「行」的元素,他們中的每一個都有它自己的內容,其在開始時隱藏,但也有其與第一啓動時間表行div並在最後一行div結束它的高度是動態計數的,取決於行的總計高度。代碼是這樣的:jQuery的統計厲害高度

<div id="milestone_view" class="timeline"> 
    <div id="line" ></div> 
    <div class="row"></div> 
    <div class="row"></div> 
    <div class="row"></div> 
    <div class="row"></div> 
    <div class="row"></div> 
    <div class="row"></div> 
    <div class="row"></div> 
</div> 

而且JS代碼:

var totalHeight = 0; 
$("#milestone_view").children('.row').each(function(){ 
    totalHeight += $(this).height(); 
    $(this).attr('height',$(this).height()); 
}); 
$("div#line").css({height:(totalHeight)}); 
alert(totalHeight); 

我已經添加了這一行$(this).attr('height',$(this).height());檢查每個div的高度。 看起來很簡單,但當頁面加載時,我得到警告與「363」和六個divs的高度= 51,一個有57(小的biger,沒關係),然後當我點擊任何div顯示它的內容,並再次點擊它隱藏它(再次調用這個函數)我得到「419」,六個div的高度爲59px,一個爲65px。這就像他們的身高一開始就被嚴重計算在一起。

如果我清楚地解釋它,我不知道,這是寫在kendoui一個應用程序的只是一小部分,但現在這一小部分是行不通的。如果這改變了什麼:那些div是動態加載的,而不僅僅是它們的內容。他們的人數可能是七點以後。

回答

2

聽起來像你.row元素在其周圍加上了8px利潤率。更改height()outerHeight()包括此邊距:

totalHeight += $(this).outerHeight(true); 
+1

如果要包括利潤太:'$(本).outerHeight(真);' –

0

這聽起來像你有paddingmarginborderline height樣式應用到它們顯示佔之前,他們都顯示後的差額只有當你的隱藏要素。