2012-02-08 16 views
2

我放置一個div,通過使用另一個div id作爲頁面上的參考(以確保它顯示在我想要的位置)。代碼如下: -jQuery - 放置與偏移的div,然後再放置=不同的結果

$('#' + contentDiv).offset({top:($('#' + placementID).offset().top), left: ($('#' + placementID).offset().left)}); 

問題是,雖然placementID偏移量每次都是相同的。每當我再次調用它時,它似乎加倍並且放置一個新的左偏移量,它與前一個偏移量相同。

E.g.我點擊一個函數並且說,把這個div放在這個placement div旁邊。它做到了。然後用戶退出,然後再次點擊並使用相同的功能將另一個div放置在同一位置div旁邊。它是這樣做的,但不是將它放在與上次相同的位置,而是將上次的位置作爲0點並將左側的量加入到該點。這意味着div現在放置在兩倍的距離。

請注意;我已經安慰了放置箱頂部和左側的尺寸,並且每次都沒有改變。

不知道發生了什麼事。

+0

是placementId在您的位置您contentDiv後不同的位置? – FiveTools 2012-02-08 18:21:57

+0

你是否刪除了以前的div?或者'.position()'可以工作。 – ijse 2012-02-08 18:34:26

+0

[jsfiddle?](http://jsFiddle.net) – 2012-02-08 18:41:46

回答

5

如果有人遇到這個問題,我已經設法解決這個問題很簡單...通過使用CSS而不是偏移量。即

$('#contentDiv').css({top:placeTop,left:placeLeft}); 
+0

我希望我們知道爲什麼抵消做到了這一點...... – jpumford 2013-02-21 18:10:26

0

我猜測,當您更改$('#' + contentDiv)的偏移量時,它會影響您隨後調用的$('#' + placementID)的偏移量。

假設您有3個展示位置Id#1,#2和#3。

隨着偏移#10,0#20,100#30,200

然後您設置#contentDiv的結果爲#1的抵消。

現在,#contentDiv的偏移量爲0,100。這使您現在分別偏移#10,100#20,200#30,300。這可能是什麼讓你失望。

+0

PlacementDiv本身沒有移動,我已經通過使用console.log來輸出placementDiv頂部和左側來澄清此問題。 – waxical 2012-02-08 19:30:49

0

設定期望的偏移值與之前重置性質(例如)

$(this).css('top', '').offset({top: desiredTopOffset});