当尝试在 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 完成的,所以上面必须从不同的“位置”运行
谢谢!