0

我正在尝试将特定 div(我们称之为:div1)的 margin-left 设置为:

-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(在本例中),但我不完全确定如何运行这一行加载整个页面并注入所有内容后的代码。

4

2 回答 2

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
    }
}

如果我们不将第二个回调定义包含在 document ready 中,我们引用的标签 $('.div2 canvas') 将不存在,因此不会绑定任何加载回调。

于 2012-09-17T18:02:43.027 回答
0
$(window).load(function () { });

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

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

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

于 2012-09-17T17:59:26.047 回答