如何正确的偏移一个元素? – jQuery

这可能是一个非常简单的问题,但是我怎样才能获得jQuery中元素的正确偏移呢?

我可以:

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

这是有效的。

但似乎是:

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

未定义。

那么在jQuery中如何做到这一点呢?

谢谢!!

Alex,Gary:

根据要求,这里是我的评论张贴为答案:

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

谢谢你让我知道。

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

参考: .outerWidth()

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

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

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

如果您需要知道元素的正确边界在哪里,那么您应该使用:

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

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

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

这段代码将得到相对于左侧的正确位置。 如果目的是为了获得右侧的权利(如使用CSS right属性),那么代码的添加是必要的,如下所示:

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

这个代码在animation中非常有用,当你不能在CSS中设置right属性的时候,你必须把右边设置为一个固定的锚点。

Brendon Crawford在这里有最好的答案(在评论中),所以我会把它移到一个答案,直到他(也许会扩大一点)。

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

实际上,这些只在窗口从左上方滚动时才起作用。
你必须减去窗口滚动值来得到一个偏移量,这对于重新定位元素是非常有用的,这样它们可以保持在页面上:

 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)); 

有一个原生的DOM API可以实现这个function – getBoundingClientRect

 document.querySelector("#whatever").getBoundingClientRect().right 

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

获得一个div/table (right)的锚点,你可以使用下面的代码。

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