2012-12-14 108 views
1

我已經在主頁上旋轉幻燈片,並要設置內容的基於圖像的高度減去標題減去箭頭的高度的高度的高度。出於某種原因,無論是標題或圖像的高度,正在返回任何東西,但0爲什麼高度返​​回0

在這裏看到:http://www.keganquimby.com/lumina/

摘錄(標題下的內容旁邊的圖像)切入箭頭當圖像高度不夠高,所以我想根據圖像高度使用CSS進行設置。

我的JS:

jQuery(document).ready(function($){ 
$('.slides .slide').each(function(){ 

    var slideHeight = $(this).height(); 
    var headerHeight = $('.slide-content header').height(); 
    var arrowHeight = $('.flex-direction-nav').height(); 

    var contentHeight = slideHeight - headerHeight - arrowHeight; 

    }); 
}); 

新的JS(編輯設置高度,並拉動其他高度調用每個循環外):

jQuery(window).load(function($){ 

var slideHeight = $(this).height(); 
var headerHeight = $('.slide-content header').height(); 
var arrowHeight = $('.flex-direction-nav').height(); 

$('.slides .slide').each(function(){ 

    var contentHeight = slideHeight - headerHeight - arrowHeight; 
    $('footer.post-more').css('height', contentHeight + 'px'); 

    }); 
}); 
+0

循環中避免DOM查詢。在'.each()'之前緩存'$('。slide-content header')。height()'(和另一個高度)。 –

+1

通常,您無法可靠地讀取DOM準備好的圖像高度,因爲圖像尚未完全加載(除非它已被緩存)。我想,你就必須做一個'$(文件)。在(「負荷」,...'。 –

+0

拉動DOM查詢外循環引起只有一個返回號碼。 –

回答

3

你要等待圖像在測量其高度之前加載。請注意,DOM就緒並不意味着圖像已被加載。嘗試這個代替:

jQuery(window).load(function($){ 
    var headerHeight = $('.slide-content header').height(), 
     arrowHeight = $('.flex-direction-nav').height(); 

    var imgHeights = $('.slides .slide').map(function() { 
     return $(this).height() - headerHeight - arrowHeight; 
    }); 
}); 

jQuery.load

負載事件被髮送到一個元件時,它和所有的子元件已經完全加載。這個事件可以發送到與URL相關的任何元素:圖像,腳本,框架,iframe和窗口對象。

+0

@pst不是真的..'.ready'等待DOM,'load' - 所有資產,如圖像,視頻,框架等 –

+0

我試過窗口載荷爲好,但它仍然是行不通的。看看。根據註釋上面,我把高度要求外循環。 –

+0

@KeganQuimby哪裏代碼中設置的高度? –