使用jQuery .offset()获取并设置位置

Den*_*ise 106 jquery

如何使用jQuery .offset方法获取和设置元素的位置?

假设我有一个div layer1而另一个layer2.我如何获得位置layer1并设置相同的位置layer2

Ste*_*eve 188

//Get
var p = $("#elementId");
var offset = p.offset();

//set
$("#secondElementId").offset({ top: offset.top, left: offset.left});
Run Code Online (Sandbox Code Playgroud)

  • 你可以传递整个`offset`对象,所以`// set`将变成:`$("#secondElementId").offset(offset)` (7认同)

KSe*_*Sev 34

我推荐另一种选择.jQuery UI有一个新的位置功能,允许您相对于彼此定位元素.有关完整的文档和演示,请参阅:http://jqueryui.com/demos/position/#option-offset.

这是使用位置功能定位元素的一种方法:

var options = {
    "my": "top left",
    "at": "top left",
    "of": ".layer1"
};
$(".layer2").position(options);
Run Code Online (Sandbox Code Playgroud)

  • 这个答案被投了两次,没有任何解释.请告诉我,为什么,如果你投票我的答案.谢谢! (13认同)
  • 通常情况下,人们会因为投票而走得太远.让我们不要认为更广泛的答案对其他人来说是无用的,即使它可能是OP的扩展.不要让我开始'关闭,因为这不是一个正确的问题';) (7认同)
  • 也许那是因为你使用jQuery UI而OP只询问jQuery. (2认同)

Amj*_*sad 16

它是可行的,但您必须知道使用offset()设置元素相对于文档的位置:

$('.layer1').offset( $('.layer2').offset() );
Run Code Online (Sandbox Code Playgroud)