这可能是一个非常简单的问题,但是如何在 jQuery 中获取元素的正确偏移量?
我可以:
$("#whatever").offset().left;
它是有效的。
但似乎:
$("#whatever").offset().right
未定义。
那么如何在 jQuery 中实现这一点呢?
谢谢!!
var $whatever = $('#whatever');
var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
也许我误解了你的问题,但偏移量应该给你两个变量:水平和垂直。这定义了元素的位置。所以你要找的是:
$("#whatever").offset().left
和
$("#whatever").offset().top
如果您需要知道元素的右边界在哪里,那么您应该使用:
$("#whatever").offset().left + $("#whatever").outerWidth()
只是对 Greg 所说的话的补充:
$("#whatever").offset().left + $("#whatever").outerWidth()
此代码将获得相对于左侧的正确位置。如果目的是获得相对于右侧的右侧位置(例如使用 CSSright
属性时),则需要在代码中添加如下内容:
$("#parent_container").innerWidth() - ($("#whatever").offset().left + $("#whatever").outerWidth())
right
此代码在动画中很有用,当您最初无法在 CSS 中设置属性时,您必须将右侧设置为固定锚点。
实际上,这些仅在窗口根本不从左上角滚动时才起作用。
您必须减去窗口滚动值以获得对重新定位元素有用的偏移量,以便它们留在页面上:
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));
Brendon Crawford 在这里有最好的答案(在评论中),所以我会把它移到一个答案,直到他这样做(也许会扩大一点)。
var offset = $('#whatever').offset();
offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
有一个本地 DOM API 可以开箱即用地实现这一点—— getBoundingClientRect
:
document.querySelector("#whatever").getBoundingClientRect().right
获得 a 的锚点div/table (left) = $("#whatever").offset().left;
- 好的!
获取 a 的锚点div/table (right)
可以使用下面的代码。
$("#whatever").width();