Jquery でページのレンダリング中に要素のディメンションを取得しようとすると、次のようにタイムアウトを設定する必要があることがよくあります。
window.setTimeout(function(){
console.log("calculate footer height");
console.log( $('div:jqmData(role="footer")') )
console.log( wrap.find('.ui-footer').css("height") )
},0);
46px
タイムアウトなしでこれを実行しながら、正しい値を返します(ケースでは)
console.log("calculate footer height");
console.log( $('div:jqmData(role="footer")') )
console.log( wrap.find('.ui-footer').css("height") )
要素を返しますが、その幅は0px
質問:
なぜこのようになるのか、さらに重要なことに、この例のように頼るよりも良い方法はありますsetTimeouts
か? 注意: 要素のレンダリングに影響を与えることはできません。これは Jquery Mobile によって行われるため、上記は別の「場所」から実行する必要があります。
ありがとう!