Javascript高度总和不匹配

时间:2013-01-04 22:16:55

标签: javascript jquery

我有一个div,绝对定位,最初是不可见的,显示在被点击的元素的位置,呈现其预览(预览的顶部位置排列在单击的元素的顶部)。 当单击的元素位于低位时,预览将呈现在原始页面边框的稍下方,并且需要滚动。我想向上移动预览,使其底边位于上一页底部限制。问题是我使用的代码没有返回页面高度的预期值(它大于预览高度和单击元素顶部位置的总和)。

这是代码: 文件1:

jQuery('elementClicked').live('click',function(){
...
jQuery("previewDiv").setTopAtClickedElement(jQuery(this));
...

}

文件2:

jQuery.fn.setTopAtClickedElement = function (element) {
//original positioning    
this.css('top', element.offset().top + 'px');

// the troublesome part where the eventual correction should be done
if (element.offset().top + this.height() > jQuery(document).height())
{
    this.css('top', jQuery(document).height() - this.height() + 'px');
}

}

当我使用时会发生类似情况  Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight) 用于a link

上建议的文件高度的度量

您对如何实现代码中这个麻烦的部分有什么建议吗?

请告诉我是否不够清楚, 谢谢,

1 个答案:

答案 0 :(得分:0)

而不是.height()尝试使用jQuery的outer.height() - api docs,它将考虑页面上的任何填充(以及可选的marign)。

jsfiddle或codepen将帮助我们解决您的问题。