加载页面时/在加载页面后给出不同结果的宽度

时间:2012-09-17 17:50:35

标签: javascript

我正在设置特定div的左边距(让我们称之为:div1)为:

-1 * $('.div2 canvas').width()/2

所以我使用以下代码行来做到这一点:

$('#div1').css('margin-left', -1 * $('.div2 canvas').width()/2);

加载页面后,它给出的结果是-150。但是,如果我在Chrome控制台中运行相同的完整代码行,则会得到正确的结果:-360,因为div2的总宽度为720.

我尝试添加:

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

$('#div1').load(function () { });

$('.div2 canvas').load(function () { });

但这没有帮助。

我的假设是div2的宽度正在根据正在注入的某种信息而变化,并且一旦页面准备好了div 720px的总宽度(在此示例中),但我不完全确定如何一旦整个页面被加载并且已经注入了所有内容,就运行这行代码。

2 个答案:

答案 0 :(得分:0)

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

应该有所帮助。你也可以试试

$(document).ready(function () { });

但如果这没有帮助,你需要向我们展示你的页面(或包含问题的演示)以及之后注入的代码。

答案 1 :(得分:0)

您需要将此代码包装在文档就绪回调中。

$(document).ready(function () {
    // Your code
}

这确保加载html,但它不关心加载的图像,这是.load的用武之地。如果你的div包含图像标记,你需要两个回调。

$(document).ready(function () { // Ensures that your document is loaded
    $('.div2 canvas').load(function () { // Ensures that the images within our tag are loaded
        // Your code
    }
}

如果我们没有在文档就绪中附加第二个回调定义,那么我们引用$('。div2 canvas')的标记将不存在,因此不会绑定任何加载回调。