0

特定のdiv(div1と呼びましょう)のmargin-leftを次のように設定しようとしています:

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

だから私はそれを行うために次のコード行を使用しています:

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

ページが読み込まれると、結果は -150 になります。ただし、Chrome コンソールでまったく同じコード行を実行すると、div2 の合計幅が 720 であるため、-360 という正しい結果が得られます。

追加してみました:

$(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に画像タグが含まれている場合は、2つのコールバックが必要になります。

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

この2番目のコールバック定義をドキュメントレディで囲まない場合、参照しているタグ$('。div2canvas')は存在しないため、ロードコールバックはバインドされません。

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

助けるべきだった。あなたも試すかもしれません

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

それでも問題が解決しない場合は、ページ (または問題を含むデモ) とその後に何かを挿入するコードを提示する必要があります。

于 2012-09-17T17:59:26.047 に答える