2013-11-10 69 views
0

这是我的代码的一部分。它在一个循环内。追加后动态div元素高度返回0

{//just to show its inside loop 
ph = "<a id=\"" + id + "\" class=\"polaroid\" href=\"" + 
src + ".jpg\"><img src=\"" + src + "_q.jpg\"><p>" + item.title + "</p></a>"; 
$("#images").append(ph); 
} 

一旦运行它将ph附加到图像div,但是当我调用$(“#images”)。height();它返回0.我已经把所有的元素都添加到div的外部,并且它仍然返回0.任何想法将不胜感激。另外,“#images”不会动态创建,只是动态填充。

这里是我的html:

<body><div id="images"></div> 
+2

一个可能的原因是如果知道图像高度可以将高度属性添加到图像标记或在css中执行,则可以在图像区域加载之前调用“高度” –

+0

。 ...在图像加载前应该允许计算 – charlietfl

+0

我也考虑过这个问题,所以我在循环(外部)之后调用height,但仍然返回0.当我检查dom时,它显示所有元素都添加到#images,但仍返回0. – user2975403

回答

1

唉,我想通了,我加了边框的所有元素(不同颜色),我注意到,即使在DOM它表现为一个标签是内部#images格,他们的外#images边框,所以我去了css并添加了overflow-y:auto,并且它们显示在边框内,现在我从$(“#images).height()获得一个值,谢谢你们的帮助,它允许我会专注于可能的原因和最终的解决方案

0

会是这样的工作?

$(document).ready(function() { 
    for(var i=0;i<3;i++) 
    { 
     ph = "<img src=\"http://placekitten.com/g/30/30\" alt=\"\" />"; 
     $("#images").append(ph); 
    } 

    $("img").one('load', function() { 
     $("#height").html($("#images").height()); 
    }); 
}); 
+0

它仍然返回0;但我注意到一些奇怪的东西,当我做$(“#images a”)。它返回我 – user2975403

+0

它仍然返回0;但我注意到一些奇怪的东西,当我做'$(“#images a”)。height();'它返回212,这是一个ph值的高度。 – user2975403