这可能是一个非常简单的问题,但我如何在jQuery中获取元素的正确偏移量?
我能做到:
$("#whatever").offset().left;
并且有效。
但似乎:
$("#whatever").offset().right
未定义。
那么如何在jQuery中实现这一目标呢?
谢谢!
答案 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()));
答案 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();