我正在放置一个div,通过使用另一个div id作为页面上的引用(以确保它出现在我想要的位置)。代码如下: -
$('#' + contentDiv).offset({top:($('#' + placementID).offset().top), left: ($('#' + placementID).offset().left)});
问题是,尽管每次放置ID偏移数字都相同。每当我再次调用它时,它似乎加倍并且在前一个偏移量的顶部放置一个新的左偏移量。
E.g。我在点击时调用一个函数并说,请将此div放在此放置div旁边。它做到了。用户然后退出然后再执行一次单击,并使用相同的函数将另一个div放在同一个放置div旁边。它做到了,但不是将它放在与上次相同的位置,而是将上一次的位置作为0点引用并将剩余量添加到该位置。这意味着div现在距离很远。
请注意; 我已经安排了展示位置左上角和左侧尺寸,并且每次都没有更改。
不确定发生了什么。
答案 0 :(得分:5)
如果有人碰到这个问题,我已经设法通过使用css代替偏移来解决问题。即。
$('#contentDiv').css({top:placeTop,left:placeLeft});
答案 1 :(得分:0)
我猜测当您更改$('#' + contentDiv)
的偏移量时,它会影响您随后调用的$('#' + placementID)
的偏移量。
假设您有3个展示位置ID#1,#2和#3。
使用偏移#1
:0,0
#2
:0,100
和#3
:0,200
。
然后你将#contentDiv
的{f}设置为#1
的偏移量。
现在,#contentDiv
的偏移量为0,100
。这会立即使您的展示位置#1
:0,100
#2
:0,200
和#3
:0,300
。这可能是什么让你失望。
答案 2 :(得分:0)
根据 http://bugs.jqueryui.com/ticket/6868 在调用.position()之前,该元素必须是可见的。 在更改我的代码以在调用offet()之前显示元素之后,它就像一个魅力。
答案 3 :(得分:0)
在使用(例如)
设置所需的偏移值之前重置属性$(this).css('top', '').offset({top: desiredTopOffset});