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

时间:2014-08-14 14:43:47

标签: javascript jquery

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

似乎有50%的时间图像的高度在其签名之前未及时计算以创建overlayPanel的高度(仅产生高度0px)。有没有更强大的方法来写这个,所以overlayPanel将始终具有prev()的高度?

2 个答案:

答案 0 :(得分:0)

你应该证明

  • 调用此函数($(document).ready()
  • 时会加载所有图像
  • (或图片的大小由css设定)
  • dom中每个$ overlayPanel的上一个标记始终是img标记

答案 1 :(得分:0)

如果每个元素与前一个元素具有相同的高度,它们都具有与第一个元素相同的高度,因此至少可以更容易地编写它。

对于图像,你必须等到图像加载才能获得高度,你可以使用window.onload,或者监听第一张图像的onload事件,然后设置高度。其他图像到同一高度

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();
}