p
タグなどのブロック レベルの要素を DOM に追加しました。その寸法は自動的に計算されます (例: auto)。ただし、少なくとも最初は、jQuery でその高さを取得することはできません。しばらくすると (おそらく何らかのレイアウト処理が行われます)、高さを取得できます。
計算された高さを取得できるようにするために、要素をDOMに追加する以外に、要素を実際に測定可能にするために何が必要ですか?
具体的に言うと、それぞれに画像の URL データが添付されselect
たいくつかのoption
要素を持つ要素があります。タグ データを読み取り、要素を非表示にし、オプションを次のような要素を持つコンテナーに変換するイメージ ピッカー プラグインを呼び出します。option
select
div
<div class='container' style='width:800px'>
<div class='convertedOptionElement' style='width:33.33%'>
<div class='thumb' style='width:100%'>
<img src="https://lh3.ggpht.com/hhG6g0m8Q6QqZnloQJHV9uXFdsDjpzD0vJdkbra5e_PiwOjVXuBdVR0D2L0RPmwb1zw=h900">
<p>Image Title</p>
</div>
</div>
</div>
そこで、33.33% の幅 (3 列を生成) の div 要素で埋められる固定幅のコンテナーがあります。これらの div のそれぞれは、変換されたオプション要素の 1 つを表します。img
それらのそれぞれの中に、 andp
タグを含む 100% 幅の div 要素があります。
さらに、imagesLoaded プラグインと masonry プラグインを使用して画像をレイアウトしています。各画像が読み込まれた後に実行される imagesLoadedイベントでは、要素の高さと幅がゼロではないprogress
ことがはっきりとわかります。img
ただし、そのコンテナはそうではなく、p
タグもそうではありません。
発生する可能性がある唯一の特別なことは、イメージ ピッカー プラグインを使用して要素を作成した直後に、 で要素をデタッチし、各イメージがロードされると発生するfor$('.convertedOptionElement').detach()
の progress
イベントで、それらをコンテナに追加することです。メソッドimagesLoaded
を呼び出して、レイアウトを実行します。すべてがDOMにあるにもかかわらず、計算された高さがゼロであるため、ここで問題が発生します。masonry.appended
正確な幅 (たとえば、33.33% と 100% の代わりに 250px) を指定した場合でも、ロードされた同じイベント ハンドラーで、既存の画像の寸法 (つまり、すべての親要素に明示的なサイズが指定されています)... 段落タグの高さはまだゼロです。
これが私のコードですが、これは機能しています。ただし、私が使用している正確なコンテキストでは機能していません。その理由はわかりません。http://jsfiddle.net/p7cgahro/7/