2011-10-03 3 views
1

У меня есть две колонки, в которых есть перетаскиваемые и отбрасываемые div. Я использовал этот код:jQuery Equal Heights of Divs

`//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 обоих столбцов должна быть меньше. Я знаю, что я усложненное это так любую помощь, чтобы разобраться в моем замешательстве здесь было бы оценен, Благодаря

ответ

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

Да, это работает для того, чтобы два divs имели ту же высоту, что и самая высокая. Однако, когда я беру вещи из одного div, мне нужны два столбца для уменьшения размера? –

+0

Вам нужен прослушиватель событий, например, когда вы удаляете вещи из одного div, вам нужно запустить этот кусок кода, чтобы пересчитать и установить высоту. –