javascript - 为什么这个函数在页面加载时没有预期的行为?

标签 javascript jquery algorithm dom responsive-design

我有一个函数,我用它来使一堆同级 div 具有相同的高度。当 DOM 准备就绪时,我定义它、调用它,然后将它设置为在 windowresiz 时调用。

jQuery(function($){
    function rescaleStuff ( )
    {
        $('.children-have-equal-height').each(function(){
            var children = $(this).children();
            var numChildren = children.length;
            if (numChildren > 1) 
            {
                var firstChild = children.first();
                var maxHeight = firstChild.height();
                firstChild.siblings().each(function() { 
                    var thisHeight = $(this).height(); 
                    if (thisHeight > maxHeight) 
                        maxHeight = thisHeight;
                });
                children.height(maxHeight);
            }
        });
    }

    rescaleStuff();

    $(window).resize(function()
    { 
         rescaleStuff();
    });
});

rescaleStuff 函数在通过调整 window 大小时调用时工作得非常好,但是当页面负载。出于某种原因,它计算的高度小于实际高度。这是为什么?

此外,是否可以使我的程序更加紧凑、优雅、可读、高效、智能和可维护?我不这么认为。 ;)

最佳答案

使用:

$( window ).load(function() {
 ....
});

如果您必须计算宽度/高度、位置... ready() 方法是不够的。您必须等到整个内容(带有图像)加载完毕,因为内容会影响高度和宽度。

关于javascript - 为什么这个函数在页面加载时没有预期的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107443/

相关文章:

Javascript bug,重复提示,仅出现在 GitHub 中

javascript - 如何从异步调用返回响应?

javascript - attr 在 Chrome 和 safari 中不起作用

javascript - 从响应文本中提取字符串

algorithm - 使用 3D 像素(体素)绘制球体

javascript - "Odd"单击 li 元素时的行为

javascript - 单击按钮后加载 javascript 文件

javascript - 使用 javascript 对数组进行排序而不更改 null 或空位置

algorithm - 是否有可能对 hyperloglog 进行重复数据删除,以便添加和删除元素会产生相对正确的唯一计数?

algorithm - 铁路轨道的排列(堆栈实现)