jQuery偏移在某些页面上无法正确计算

时间:2013-11-06 12:31:23

标签: javascript jquery html css

我正在使用jQuery offset().top来计算文档窗口顶部的超链接像素,以便在悬停时,工具提示可以显示在其上方。

默认情况下,工具提示的css的绝对位置为前0和左0.当链接悬停时,它会从文档顶部计算它的位置,并将其用作工具提示的css顶部位置。

问题在于,在某些页面上,偏移是完美地计算链接的位置,而在其他页面上,它大约是50像素。我无法弄清楚原因。

$(".tiptrigger").mouseenter(function() { 
    var s_id = $(this).attr('id');
    var calc = $(this).offset().top; 
    $("#tip-"+s_id).css({"margin-top": calc+"px"});
});

2 个答案:

答案 0 :(得分:0)

.offset()limitation

  

注意:jQuery不支持获取隐藏元素的偏移坐标或者考虑在body元素上设置边框,边距或填充。

所以你的jQuery可能是正确的,但如果你的身体有一些填充/边距,你会遇到不正确的偏移。删除它或将其包含在您的计算中:

var bodyOffset = $('body').css("margin-top") + $('body').css('padding-top') + $('body').css('border-top');
var calc = $(this).offset().top + bodyOffset; 

答案 1 :(得分:0)

而不是absolute尝试使用fixed作为弹出元素。如果你没有对body

应用任何不必要的填充,那么应该使用offset()。top

如果仍然不准确而不是.offset()。顶部有机会https://developer.mozilla.org/en-US/docs/Web/API/element.getBoundingClientRect