2011-10-03 129 views
1

我有兩列中有可拖動和可放置的div。我用這個代碼:jQuery同等高度的div

`//Equal Height Divs 
     function equalHeight(group) { 
      var tallest = 0; 
      group.each(function() { 
       var thisHeight = $(this).height(); 
       if(thisHeight > tallest) { 
        tallest = thisHeight; 
       } 
      }); 

      group.each(function() { 
       $(this).css("min-height", tallest); 
      }); 
     }` 

,以確保更多的div被添加到一個列和列的高度變大,從而將第二列的高度。

但是我似乎不知道如何反轉這個,所以如果我從一列中刪除東西,並且兩列的div高度應該變小。我知道我已經過於複雜了,所以在這裏解決我的困惑的任何幫助將不勝感激, 謝謝

回答

1

只需添加$(this).css("height", "");,即可重置CSS高度屬性,以便高度不會超過必要值。如果沒有一套height屬性,元素將縮至最小高度:

function equalHeight(group) { 
     var tallest = 0; 
     group.each(function() { 
      $(this).css({height:"", "min-height":""}); 
      var thisHeight = $(this).height(); 
      if(thisHeight > tallest) { 
       tallest = thisHeight; 
      } 
     }); 

     group.each(function() { 
      $(this).css("min-height", tallest); 
     }); 
    } 
+0

這難道不是將高度設置爲「最高」,仍然與之前一樣高嗎? – whostolemyhat

+0

不,'$(this).css(「height」,「」)'重置高度變量,以便元素縮小到最小尺寸。 –

1

我想我明白你的問題只是在一定程度上。如果您嘗試使用最高元素的高度設置元素的高度,則可以使用此代碼。假設您正在處理的元素具有相同的類。

var maxHeight = Math.max.apply(null, $('.common_classname').map(function() { 
       return $(this).height(); 
     }).get()); 

$('.common_classname').height(maxHeight); 
+0

是的,這是爲了讓兩個div具有與最高一樣的高度相同的高度。然而,當我拿出一個div的東西,我需要兩列減少大小? –

+0

你需要一個事件監聽器,就像當你從一個div中移除一些東西時一樣,你需要運行這段代碼來重新計算和設置高度。 –