6

私はDOM要素を動的に作成しています(より具体的には、jQueryを使用してcss「width:auto」でテキストを含むDIVを作成し、ページのOnLoadイベントで「font-face」フォントを使用しています)が、幅がdivを作成して DOM ツリーに追加した直後に、div が予想されるサイズではありません (具体的には、幅が間違っています) 。動的レイアウトを行うため、要素の幅/高さを知る必要があります。

回避策として、要素を作成した後に次のコードを使用します。

SetTimeout(complete_layout,100)

この余分なタイムアウトでレイアウトの完了を遅らせることで、すべてが完全に機能し、すべての要素のサイズが期待どおりになります (Ubuntu Linux の最新の Chrome では)。

しかし、このクルーギー タイマーの遅延は私の感覚を害し、明らかに安全ではありません...特定のコマンドで正確な寸法計算を強制する方法はありますか? または、新しい動的要素が作成された後、すべての DOM 要素のサイズが正しく設定された場合にのみ発生する、登録できるイベントはありますか? (私は IMG onload イベントのようなものを描いています。これにより、画像が読み込まれると、画像の適切なサイズを把握できます)

tl;dr : 新しく作成された DOM オブジェクトの幅がいつ正確になるかについての保証はありますか?

ご協力いただきありがとうございます!

4

2 に答える 2

3

どのように幅を取​​得しようとしていますか?.css("幅")、または.width()、

.css("width') は auto 以外を返さないため、.width() を使用する必要があります (何らかのスタイルで幅が指定されていない場合)。

$("#foo").width();

すぐに追加した後でも幅を与える必要があります。

于 2011-01-08T21:29:57.543 に答える
0

新しいdivを追加する要素の幅を取得することで、幅を取得できます。新しい div の幅は auto に設定されているため、同じになるはずです。

ただし、これは高さには機能しません。

于 2011-01-08T21:15:34.360 に答える