这可能是一个非常简单的问题,但是如何在jQuery中获取元素的正确偏移量呢?
我可以:
$("#whatever").offset().left;
这是有效的。
但似乎:
$("#whatever").offset().right
未定义。
那么如何在jQuery中做到这一点呢?
谢谢!!
Answers:
$whatever[0].getBoundingClientRect().right
。这是相对于窗口的左边缘。
var $whatever = $('#whatever');
var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
实际上,只有在完全不从左上角滚动窗口时,这些功能才起作用。
您必须减去窗口滚动值才能获得一个偏移量,该偏移量对于重新定位元素非常有用,因此它们可以留在页面上:
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可以实现此目标— getBoundingClientRect
:
document.querySelector("#whatever").getBoundingClientRect().right
得到一个锚点div/table (left) = $("#whatever").offset().left;
-好吧!
获取a的锚点,div/table (right)
您可以使用下面的代码。
$("#whatever").width();