Javascript 如何在动态加载图像的情况下获取元素的高度
我有很多表,在最后一个td中,在最后一个tr中,我把来自后端的消息放进去。可能不仅有文本,还有图像(标记中指向它们的url),因此它们可以动态加载。我需要得到这张桌子的高度,如果它超过400,我就加一些康坦特 首先,我这样做:Javascript 如何在动态加载图像的情况下获取元素的高度,javascript,jquery,html,Javascript,Jquery,Html,我有很多表,在最后一个td中,在最后一个tr中,我把来自后端的消息放进去。可能不仅有文本,还有图像(标记中指向它们的url),因此它们可以动态加载。我需要得到这张桌子的高度,如果它超过400,我就加一些康坦特 首先,我这样做: $("table[name]='forum'").each(function() { var height = $(this).height(); if (height > 400) { var redirec
$("table[name]='forum'").each(function() {
var height = $(this).height();
if (height > 400) {
var redirect = $("#backUrl").val() + "#" + $(this).find("[name]='answ'").attr("id");
$(this).find("tr:last-child > td:last-child").append(function() {
return "<div></div><a style='float: right' href='"+ redirect + "'><img src='/images/arrow_up.png'></a>";
});
};
});
但我理解,这是错误的,因为img可能会在该块完成后加载。我做了一些其他的动作,但它不会影响我想要的
这个问题的解决办法是什么?因为它计算不带img标记的整个元素的高度。要获得最终的表格高度(如果img会影响高度,或者您可以预先设置一些最大高度),您必须等待加载所有图像
var table = $(this), imgs = table.find("img"), len = imgs.length;
imgs.one('load', function() {
len--;
//now all image loaded
if (len == 0) {
//here you got the final height
height = table .height();
//do stuffs here
}
}).each(function() {
if (this.complete)
$(this).load();
});
它不会每次都起作用),因为可能会有几个图像,它们可以躺成一排,或者一个接一个。因此,如果高度低于所需的高度,但它是一个接一个的-这不起作用。因此,在我看来,正确的方法是等待所有图像加载,然后获取高度
$(this).find("img").load(function() {
height += $(this).height();
});
var table = $(this), imgs = table.find("img"), len = imgs.length;
imgs.one('load', function() {
len--;
//now all image loaded
if (len == 0) {
//here you got the final height
height = table .height();
//do stuffs here
}
}).each(function() {
if (this.complete)
$(this).load();
});