2011-05-27 55 views
1

我目前正試圖找出如何設置div中所有同級元素p的高度,方法是通過動態查找該div中最長的p元素的高度無需設置的最大高度,得到了herejquery動態地找到最長的高度來設置高度爲div中的所有兄弟

的代碼,我想動態設置高度爲最長p動態,因爲我不知道的最長p

這裏高度的代碼

$(document).ready(function() { 
    setHeight('.col'); 
}); 



//global variable, this will store the highest height value 
var maxHeight = 100; 

function setHeight(col) { 
    //Get all the element with class = col 
    col = $(col); 

    //Loop all the col 
    col.each(function() {  

     //Store the highest value 
     if($(this).height() > maxHeight) { 
      maxHeight = $(this).height();; 
     } 
    }); 

    //Set the height 
    col.height(maxHeight); 
} 

如果有人知道如何做到這一點,將是巨大

我有一個原始JavaScript解決方案之下,但它必須是jQuery的

function parseRightTabs() { 
    var height = 20; 
    var ht = 0; 
    for(var i=1; i<5; i++) { 
     ht = Od('rTest'+i).offsetHeight; 
     if(ht>height) height = ht; 
     if(i>1)Od('rTest'+i).style.display='none'; 
    } 
    if(height < 50) height = 112; 
    Od('rTests').style.height = height + 'px'; 
    Od('rtShow2').style.display = Od('rtShow3').style.display=Od('rtShow4').style.display = 'none'; 
} 

希望有人能幫助

here是鏈接,如果您點擊右側部分的評價並點擊1,2或3

這裏是js小提琴

http://jsbin.com/owiju5/2/edit

+1

「我有以下的javascript原料解決方案,但它必須是jQuery的」你的意思是這周圍的其他方式? jquery是javascript ... – 2011-05-27 12:32:05

+0

@josh最近我聽說很多,初學者希望他們的JavaScript被編碼爲jQuery-like。這對他們來說更容易理解,並提供了一種入門方式,以學習原生JavaScript方法,因爲他們的進步... – 2011-05-27 13:24:20

+0

我知道jquery是javascript,但jquery似乎更流暢地學習我來自設計背景 – sat 2011-05-27 13:48:31

回答

0

我認爲你將不得不兩次循環。一旦獲得最高價值,然後再將所有高度設置爲該值。

因此,像

... 

$(".col").each(function() {  

     //Store the highest value 
     if($(this).height() > maxHeight) { 
      maxHeight = $(this).height();; 
     } 
    }); 

$(".col").each(function() {  
     $(this).height(maxHeight); 
    }); 

... 
+1

.height()自動遍歷每個匹配的元素。 – 2011-05-27 12:36:25

+0

比你的信息...現在我已經學到了今天的新東西;)...這是大多數JQuery的標準行爲還是這個函數是奇數? – inquam 2011-05-27 12:42:04

+0

這是非常標準的,大多數的jQuery方法作用於整個集合,而不僅僅是一個節點。除非API文檔另有說明,否則我會認爲它始終如此。很高興你學到了一些新東西:p – 2011-05-27 12:45:12

5

嘗試了這一點 -

var $paragraphs = $('div p'); 

var heights = $paragraphs.map(function() { 
    return $(this).height(); 
}); 

var maxHeight = Math.max.apply(this, heights); 

$paragraphs.height(maxHeight); 
+0

這幾乎可以工作,但它增加了半按div的按鈕,但它是一致的,所以可能需要一個tweek – sat 2011-05-27 13:16:28

+0

//你的上下文(股利要檢查) \t \t \t VAR的div = $(」。rtTestimonials')得到(0), \t \t \t高度= []; \t \t \t $( 'COL',DIV)。每個(函數(){ \t \t \t heights.push($(本).height()); \t \t \t}); \t \t \t var maxHeight = Math.max.apply(this,heights); \t \t \t $('。col',div).height(maxHeight); – sat 2011-05-27 13:16:34

+0

以上是我做的 – sat 2011-05-27 13:16:43

1

有一個插件來做到這一點:Equal Column Heights

但是原則上你的代碼應該做這樣的事情:

$elems = $('.my_columns'); 
var max_height = 0; 
$elems.each(function(idx, elem) { 
    max_height = Math.max(max_height, $(elem).height()); 
}); 
$elems.height(max_height); 
+0

它與我合作,但您需要在每個功能後將冒號更改爲分號 – yzicus 2015-11-04 12:06:12

0

這是簡單的代碼

var heights = $("element").map(function() 
{ 
return $(this).height(); 
}).get(), 

MaxHeight = Math.max.apply(null, heights); 

var highest = null; 
var hi = 0; 
$(".testdiv").each(function(){ 
var h = $(this).height(); 
if(h > hi){ 
hi = h; 
highest = $(this); 
}  
}); 

highest.css("background-color", "red"); 
相關問題