Есть ли способ обнаружить неявные и явные значения высоты CSS в jQuery?

В jQuery оба $('#foo').height() и $('#foo').css('height') возвращают значение, даже если свойство height не было явно задано с помощью CSS. Есть ли способ обнаружить, если элемент не имеет явной высоты, т.е. Он просто отображается в соответствии с его содержимым?

Вот пример, который я написал, чтобы продемонстрировать: http://jsfiddle.net/Enn6p/2/

ИЗМЕНИТЬ

Чтобы уточнить мой вопрос, $('#foo').css('min-height') и $('#foo').css('max-height') уже корректно возвращают пустую строку, если они явно не заданы. Я ищу способ узнать, устанавливается ли явное значение height через CSS или нет.

ИСПОЛЬЗОВАНИЕ CASE

У меня есть script, который пытается сделать floated элементы одинаковой высоты. Он делает это, перебирая элементы, чтобы увидеть, какой из них самый высокий, затем применив эту высоту ко всем из них. В некоторых случаях эти элементы уже имеют явное значение высоты, но остальные отображаются неявно.

Теперь я хочу добавить возможность отменить это, и все вернется к их первоначальной высоте. Чтобы сделать это, мне нужно знать, был ли элемент первоначально установленным по высоте, или если высота была "авто". Как только я смогу сделать это, я могу сохранить исходное значение в коллекции данных для элемента, а затем использовать это, чтобы позже вернуться к исходной высоте.

Ответ 1

В некоторых старых версиях jQuery было возможно:

http://jsfiddle.net/strikernl/y3P3A/

но теперь вы должны просто использовать такую ​​функцию, как:

function sizeDefined(obj){
   var tmp = obj.clone().html('').appendTo($('body'));
    var w = (tmp.width()==0  ? "no":"yes");
    var h = (tmp.height()==0  ? "no":"yes");
    tmp.remove();
   return  [w,h];
}

http://jsfiddle.net/Enn6p/12/

Ответ 2

В принципе, если вы избавитесь от содержимого элемента и измерите его высоту, он будет равен 0, если только он не имеет ранее установленную высоту (как стиль). Итак, рассуждая:

 function hasSetHeight(elem){
    var html=elem.html();
    elem.html('');
    height = elem.height();
    elem.html(html);
    return (height > 0);
}

удаляет все содержимое элемента, измеряет его высоту и возвращает true или false, если элемент имеет заданную высоту или нет.