特定のdivの高さを必要とするスクリプトがあります。セレクタはsetTimeoutの中にしか適切な値を見つけません
問題は、それがsetTimeout
関数内の場所でない限り、jQueryのに.height()
方法も0
の値で、適切な値を返さないです。 だから、この:0
2:この
1で
console.log("1:" + $(slides[0]).find('.slide__inner').height()); setTimeout(function(){console.log( "2:" + $(slides[0]).find('.slide__inner').height());} , 0);
結果399 //期待値
今私は、ブラウザの承知していますマルチスレッドのものであり、タイマー要素内の要素は独自の次元で実行されます。b私はこのセレクタをsetTimeoutやタイマー機能を使わずに正しい値を出力させる必要があります。
追加情報:
ターゲットdivの位置絶対的である、関数自体は、特に内のコンテンツ(高さ)の後に火災アップに意味されるすべてのセットです。
編集
これはないWhen should I use jQuery's document.ready function? の複製です。私は、具体的にはEDIT2
が挙げafterLoad
関数Fancybox3 JSプラグインの一部である
.... IはsetTimeoutメソッドを使用するwan'tいけないと述べました。スライドの内容は、私が起因するコードのあまりを表示するために許可されていないのです
ロード行われる$ .noop、//:
後負荷:ソースから 読書がhereを見つけました仕事の制限はなく、ブロック自体がthe documentation of the plugin you're usingとあなたの元の質問にあなたのコメントに基づいて
afterLoad
ブロック
document.readyにコードをラップしたり、スクリプトタグをページの下部に配置してみましたか?要素に実際にロードする必要がある画像やその他のコンテンツが含まれている場合は、代わりに – adeneo
'$(document).ready(function(){console.log(" 1: "+ $ (スライド[0])。find( '。slide__inner')。height());}); ' – Roberrrt
同じ効果です。全体の内容が読み込まれた後に起動するfancyboxesの 'afterLoad'関数の中で演奏されます – aln447