在jQuery中,即使没有使用CSS显式设置高度属性,$('#foo').height()
和$('#foo').css('height')
都会返回一个值。有没有办法检测元素是否没有明确的高度,即它只是根据其内容进行渲染?
以下是我撰写的示例:http://jsfiddle.net/Enn6p/2/
修改
为了进一步澄清我的问题,$('#foo').css('min-height')
和$('#foo').css('max-height')
已正确返回空字符串(如果未明确设置)。我正在寻找一种方法来确定是否通过CSS设置显式height
值。
使用案例
我有一个脚本试图使浮动元素具有相同的高度。它通过循环元素来查看哪一个是最高的,然后将该高度应用于所有元素。在某些情况下,这些元素已经有明确的高度设置,但其他元素是隐式呈现的。
我现在想要添加撤消此功能的功能,并使一切恢复到原来的高度。为了做到这一点,我需要知道元素最初是否设置了高度,或者高度是否为“auto”。一旦我能够做到这一点,我可以将原始值存储在元素的数据集合中,然后使用它来稍后恢复到原始高度。
答案 0 :(得分:2)
在一些旧版本的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];
}
答案 1 :(得分:0)
基本上,如果你摆脱了元素的内容并测量它的高度,它将等于0,除非它具有先前设置的高度(作为样式)。所以通过这个推理:
function hasSetHeight(elem){
var html=elem.html();
elem.html('');
height = elem.height();
elem.html(html);
return (height > 0);
}
删除元素的所有内容,测量其高度,如果元素具有设置的高度,则返回true或false。