【发布时间】:2015-08-22 17:51:17
【问题描述】:
我有一个页脚,它应该根据其 outerHeight() 使用 javascript 函数自动显示,但它没有.. 调试我得到空值..
<section class="z-index-1 pull-bottom-fixed full-width" data-pages="reveal-footer">
<section>
<div class="container">
<dv class="row"></div>
<dv class="row"></div>
</div
</section>
<section>
<div class="container">
<div class="row"></div>
<dv class="row"></div>
</div>
</section>
</section>
这里是reveal-footer函数
Pages.prototype.initRevealFooter = function() {
var _elem = $('[data-pages="reveal-footer"]');
setHeight();
function setHeight(){
var h = _elem.outerHeight();
_elem.prev().css({
'margin-bottom':h
})
}
$(window).resize(function(){
setHeight();
})
}
当我检查 _elem.outerHeight() 我得到 null ...
我正在使用最新的 JQuery 版本(1.11.3) 我阅读了关于 outerHeight() 的 jQuery ...
更新
在 OS X 上的 FF 和 Chrome 上的调整大小工作正常(出现滑块,我可以滚动到底部以查看页脚),但在 Safari 上却没有 ..
所以 Safari 不喜欢这段代码
Pages.prototype.initRevealFooter = function() {
var _elem = $('[data-pages="reveal-footer"]');
setHeight();
function setHeight(){
var h = _elem.outerHeight();
_elem.prev().css({
'margin-bottom':h
})
}
$(window).resize(function(){
setHeight();
})
}
【问题讨论】:
-
简单原因...隐藏元素没有尺寸或页面偏移。浏览器只能测量它显示的内容
-
jQuery 声明:当元素或其父元素被隐藏时,.outerHeight() 报告的值不能保证准确。要获得准确的值,请在使用 .outerHeight() 之前确保元素可见。 jQuery 将尝试暂时显示然后重新隐藏元素以测量其尺寸,但这是不可靠的,并且(即使准确)会显着影响页面性能。在 jQuery 的未来版本中可能会删除这种显示和重新隐藏测量功能。