代码之家  ›  专栏  ›  技术社区  ›  Mala

jquery-在document.ready…之前运行函数,但不要太早

  •  4
  • Mala  · 技术社区  · 14 年前

    我有一个页面包含一个DIV,当页面加载时,它必须通过JS调整大小。为此,我给它一个“默认宽度”760px,然后运行以下代码:

    function resizeList()
    {
        var wlwidth,iwidth,nwidth;
        wlwidth = document.body.clientWidth - 200 - 60;
        iwidth = 320;
        nwidth  = Math.floor(wlwidth / iwidth) * iwidth;
        $('#list').css('width',nwidth);
    }
    
    $(document).ready(function(){
        // if we're looking at a list, do the resize-thing, now and on window resize
        if (window.location.pathname.toString().split('/')[1] == "list")
        {
            resizeList();
            window.onresize = resizeList;
        }
    });
    

    但是,页面可能需要一段时间加载为 #list DIV包含很多图像。因此,只有在所有内容完成加载后,DIV才会扩展以填充正确的宽度。我不能把它从 $(document).ready 否则,它会错误地说document.body未定义。

    有没有办法调整 表列 是否在加载所有内容之前进行DIV?

    编辑
    请参阅: http://www.google.com/images?q=whatever
    他们已经实现了我想要成功的目标。加载页面时,列表的大小立即正确,然后填充。通过调整窗口大小和观察元素的平稳移动,您可以通过JS判断它们对所有内容的大小。遗憾的是,谷歌的JS并不是世界上最容易阅读的。 叹息

    1 回复  |  直到 14 年前
        1
  •  4
  •   Dustin Laine    14 年前

    它正在尽可能快地运行, $(document).ready 是在DOM完成呈现时发生的事件。

    您应该添加一个加载屏幕onload,然后可能在重新调整大小后淡出。