[英]jQuery .height() doesn't work as expected
我有一个页面,我希望彼此相邻的div具有相同的高度。
我有以下功能:
function setProjectsHeight() {
var count = 0;
$(".project").each(function() {
if(count % 3 === 0) {
var highest = 0;
for(i=count;i<=count+2;i++) {
if($("div.project#"+i).height() > highest) {
highest = $("div.project#"+i).height();
}
}
console.log(highest);
}
count++;
});
}
不知何故,高度始终为零。 选择器似乎是正确的(测试过),当console.log()具有相同选择器的宽度时,它返回200(正确)。
编辑:刚刚解决了! 不知怎的,我有了在css中设置“body {display:none}”的想法,并在document.ready()的末尾将此属性设置回'block'。 我这样做是因为我使用了jQuery UI按钮,用户看到这些按钮从普通链接切换到UI布局。
当我删除此功能时,一切都恢复了。 看来当setProjectsHeight()被调用时,body仍然显示:block。 因此,没有计算出的高度。
谢谢你的帮助!
尝试从window.load()事件而不是document.ready()调用该函数。
这个问题的原因是,jQuery不会启动width()和height()设置,直到所有img / object / ...元素都已完成加载 - ready()会在页面处理后立即触发,但是有些对象可能仍在下载。
确保你有一个清除浮动的元素/应用一个clearfix(如果有任何浮动)。 如果不这样做,至少父容器不会扩展到它应该具有的高度。
还尝试使用.outerHeight()
因为这包括边框大小和填充。
你的选择器可能是错的。 你应该只使用id选择器,因为id在文档中是唯一的并且具有最快的查找:
$('#'+i)
也正如人们所提到的那样,无法使用数字开头的id(但在大多数浏览器中都有效)
它也可能在你的DOM中有重复的id,在这种情况下,没有什么能像你期望的那样工作。 dom id必须是唯一的 。
你确定每个.project
元素都有适当的ID属性,因为$("div.project#"+i)
选择器需要ID为0,1,2等?
如果标签ID为1, 2, 3
请在项目结束后给出空格
$("div.project #"+i)
刚刚解决了! 不知怎的,我有了在css中设置“body {display:none}”的想法,并在document.ready()的末尾将此属性设置回'block'。 我这样做是因为我使用了jQuery UI按钮,用户看到这些按钮从普通链接切换到UI布局。
当我删除此功能时,一切都恢复了。 看来当setProjectsHeight()被调用时,body仍然显示:block。 因此,没有计算出的高度。
谢谢你的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.