Javascript 有时不计算每个项目的高度

Javascript 有时不计算每个项目的高度,javascript,jquery,Javascript,Jquery,似乎有50%的时间图像的高度没有及时计算出来,直到它被指定创建覆盖板的高度才得到高度0px。有没有一种更可靠的方法来写这篇文章,以便覆盖面板始终具有上一页的高度?你应该证明这一点 当调用$document.ready此函数时,将加载所有图像 或者图像的大小由css设置 dom中每个$overlayPanel的前一个标记始终是img标记 如果每个元素都与前一个元素具有相同的高度,那么它们都与第一个元素具有相同的高度,因此至少有更简单的方法来编写 对于图像,在获取高度之前,您必须等待图像加载,您可以

似乎有50%的时间图像的高度没有及时计算出来,直到它被指定创建覆盖板的高度才得到高度0px。有没有一种更可靠的方法来写这篇文章,以便覆盖面板始终具有上一页的高度?

你应该证明这一点

当调用$document.ready此函数时,将加载所有图像 或者图像的大小由css设置 dom中每个$overlayPanel的前一个标记始终是img标记
如果每个元素都与前一个元素具有相同的高度,那么它们都与第一个元素具有相同的高度,因此至少有更简单的方法来编写

对于图像,在获取高度之前,您必须等待图像加载,您可以使用window.onload,或者侦听第一个图像的onload事件,然后将其他图像的高度设置为相同的高度

if($('body').hasClass('single') && ($overlayPanel) ) {
    $overlayPanel.each(function(){
        $(this).height($(this).prev().height());
    })
}

您是否在窗口加载而不是doc ready中尝试过此代码?
if( $('body').hasClass('single') && $overlayPanel.length ) {
    var img = new Image();
    img.onload = function() {
        $overlayPanel.css('height', $(this).height())
    }
    img.src = $overlayPanel.first().prop('src');
    if (img.complete) img.onload();
}