Javascript jQuery-放置带有偏移量的div,然后再次放置它=不同的结果

Javascript jQuery-放置带有偏移量的div,然后再次放置它=不同的结果,javascript,jquery,offset,Javascript,Jquery,Offset,我正在放置一个div,使用另一个div id作为页面上的引用(以确保它显示在我希望的位置)。代码如下:- $('#' + contentDiv).offset({top:($('#' + placementID).offset().top), left: ($('#' + placementID).offset().left)}); 问题是,尽管placementID偏移量每次都是相同的。每当我再次调用这个函数时,它似乎会加倍,并在上一个偏移量的基础上添加一个新的左偏移量,该值与上一个偏移量相

我正在放置一个div,使用另一个div id作为页面上的引用(以确保它显示在我希望的位置)。代码如下:-

$('#' + contentDiv).offset({top:($('#' + placementID).offset().top), left: ($('#' + placementID).offset().left)});
问题是,尽管placementID偏移量每次都是相同的。每当我再次调用这个函数时,它似乎会加倍,并在上一个偏移量的基础上添加一个新的左偏移量,该值与上一个偏移量相同

例如,我点击调用一个函数,然后说,请把这个div放在这个placement div旁边。它做到了。然后用户退出并再次单击,使用相同的函数将另一个div放置在同一个放置div旁边。它这样做,但不是将其放置在与上次相同的位置,而是将上次的位置作为0点引用,并将剩余的数量添加到该位置。这意味着div现在被放置在两倍的距离之外

请注意我已经完成了放置框顶部和左侧的尺寸,每次之后都没有改变


不确定发生了什么。

我猜当您更改
$('#'+contentDiv)
的偏移量时,它会影响您随后调用的
$('#'+placementID)
的偏移量

假设您有3个放置Id#1、#2和#3

使用偏移量
#1
0,0
#2
0100
#3
0200

然后将
#contentDiv
的offest设置为
#1
的偏移量


现在,
#contentDiv
的偏移量是
0100
。这使得您的放置偏移量现在分别为
#1
0100
#2
0200
#3
0300
。这可能就是让你感到不快的原因。

如果有人碰到这个问题,我已经设法非常简单地解决了这个问题。。。通过使用css而不是偏移量。即

$('#contentDiv').css({top:placeTop,left:placeLeft});
据 在调用.position()之前,元素必须可见。
在调用offet()之前更改代码以显示元素后,它就像一个符咒一样工作。

在使用(例如)设置所需的偏移值之前重置属性


定位contentDiv后,placementId是否处于不同的位置?是否删除了上一个div?或者可能
.position()
会起作用。position的工作方式不同,因此没有帮助。它是相对于父母的。PlacementID(如编辑所述)尚未移动。我将看看我是否可以跳过它。PlacementDiv本身没有移动,我已经通过使用console.log输出PlacementDiv top和left来澄清了这一点。
$(this).css('top', '').offset({top: desiredTopOffset});