2010-07-01 2 views
0

У меня есть div, который содержит количество элементов, которые пользователь может перетащить, чтобы переставить внутри. Кроме того, он может добавлять новые элементы из панели инструментов. Я хочу увеличить высоту внешнего div, чтобы обернуть все эти элементы. Теперь они перекрываются на нижнем колонтитуле. Проблемы, с которыми я сражаюсь, - 1. Как найти элементы, которые расположены ниже других. Все элементы имеют относительные позиции. 2. Изменение высоты необходимо обрабатывать при падении элемента.Как вычислить высоту элементов внутри div в jquery?

Мне нужно решение очень срочно.

Thanks

+0

, что бы у сделал до сих пор? .. давайте посмотрим, HTML и коды написаны .. – Kai

+0

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

ответ

2

Возможно, что-то вроде этого?

var height = 0; 
$("div > *").each(function() { 
    height += $(this).height(); 
}) 
+1

Я предпочитаю 'var totalHeight = 0; $ ("# container"). Children(). Each (function() { totalHeight + = $ (this) .outerHeight(); }); alert ("Total Height:" + totalHeight + "px"); '1) Я избегаю именования переменных, которые соответствуют именам атрибутов. 2) внешнийHeight учитывает отступы, поля и границы –

0

В этом случае вы можете использовать метод Array.prototype.reduce упростить решение в одной строке:

 var innerHeight = $("#parentDIV").children().reduce(function(a, b){ 
      return $(a).height() + $(b).height(); 
     }); 

Уменьш метод полезен в целом, и она поддерживается наиболее современных браузеров , Для обеспечения совместимости, вы можете легко добавить метод: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

0

Лучшего способ я думаю, что это:

для первого создания элементов DIV

var divToShow = " < div id='addNEWpop' > "; 

затем поместить все элементы в нем, то добавьте его к вашему телу

$(document.body).append(divToShow); 

теперь позволяет получить высоту DIV

heightS=$('[id^="addNEWpop"]').height(); 

, прежде чем показать это сделать CSS

$("#addNEWpop").css({width:"400px",height:heightS+"px",display: "none", }) 

и, наконец,

$('[id^="addNEWpop"]').show("slow");