如何获得元素的正确偏移? - jQuery

时间:2010-06-15 06:56:44

标签: jquery offset

这可能是一个非常简单的问题,但我如何在jQuery中获取元素的正确偏移量?

我能做到:

$("#whatever").offset().left;

并且有效。

但似乎:

$("#whatever").offset().right 

未定义。

那么如何在jQuery中实现这一目标呢?

谢谢!

7 个答案:

答案 0 :(得分:150)

亚历克斯,加里:

根据要求,以下是我的评论:

var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));

谢谢你让我知道。

在伪代码中可以表示为:

正确的偏移是:

窗口的width减号
(元素的left offset加上元素的outer width

答案 1 :(得分:28)

var $whatever        = $('#whatever');
var ending_right     = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));

参考:.outerWidth()

答案 2 :(得分:14)

也许我误解了你的问题,但偏移应该给你两个变量:水平和垂直。这定义了元素的位置。所以你要找的是:

$("#whatever").offset().left

$("#whatever").offset().top

如果您需要知道元素右边界的位置,那么您应该使用:

$("#whatever").offset().left + $("#whatever").outerWidth()

答案 3 :(得分:8)

只是格雷格所说的一个补充:

  

$(“#whatever”)。offset()。left + $(“#whatever”)。outerWidth()

此代码将相对于左侧获得正确的位置。如果目的是获得相对于右侧的右侧位置(就像使用CSS right属性时那样),则需要添加代码,如下所示:

  

$(“#parent_container”)。innerWidth() - ($(“#whatever”)。offset()。left + $(“#whatever”)。outerWidth())

此代码在动画中非常有用,当您无法在CSS中初始设置right属性时,必须将右侧设置为固定锚。

答案 4 :(得分:4)

Brendon Crawford在这里得到了最好的答案(在评论中),所以我会把它移到一个答案,直到他做(并且可能会扩展一点)。

var offset = $('#whatever').offset();

offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));

答案 5 :(得分:4)

实际上,这些仅在窗口未从左上角位置滚动时才起作用 您必须减去窗口滚动值以获得对重新定位元素有用的偏移量,以便它们保留在页面上:

var offset = $('#whatever').offset();

offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));

答案 6 :(得分:2)

获取div/table (left) = $("#whatever").offset().left;的定位点 - 确定!

获取div/table (right)的定位点,您可以使用下面的代码。

 $("#whatever").width();