2010-11-22 54 views
2

所以我有這個項目,即時通訊工作,現在即時通訊卡:(jQuery UI的拖放位置上的第一滴跳躍

我的問題是,當我拖放我的項目,我需要獲得/位置相對它從我的理解,我應該使用位置()設置爲一個容器,而不是整個身體,讓我做到這一點使用

var pos=$(ui.helper).position(); 
objName = "#leaf"+counter++ 
$(objName).css({"left":pos.left,"top":pos.top}); 

雖然這種介紹只是後,我在div拖動跳轉。

我有這個工作,它會給我絕對的左和右值使用var pos = $(ui.helper).offset();並將我的容器(#treeContainer)CSS設置爲不包含「position:relative;」雖然這給了我相對於整個頁面的絕對值!

非常感謝您的回覆!

回答

0

首先,移除#drag對象上的定位CSS。這些價值觀傳遞到目標對象,並與您在那裏的目標相沖突。或者,您可以在JS代碼中將這些值重置爲0。

#drag1 { 
    width:74px; 
    height:111px; 
    float:right; 
    background-color:#0F3; 
} 

#drag2 { 
    width:74px; 
    height:111px; 
    float:right; 
    background-color:#3C9; 
} 

接下來,在JS,你需要使用減法,以抵消從父容器值你topleft值。

 var pos = $(ui.helper).offset(); 
     var treePos = $('#treeContainer').offset(); 
     objName = "#leaf" + counter++; 
     $(objName).css({"left": pos.left - treePos.left, "top": pos.top - treePos.top}); 

經過這些更改後,它可以正常工作。一個例子見http://jsbin.com/exoqu3/6

+0

嘿感謝真棒回覆,我已經在代碼中添加到我的項目,但我仍然得到這個問題,但跳躍很小。我已經更新我的問題與我的項目URL,所以你可以看到整個圖片,任何想法?再一次感謝回覆 – Mac 2010-11-22 20:03:31

-1

變化

#drag1 { 
    width:74px; 
    height:111px; 
    float:right; 
    background-color:#0F3; 
} 

它與你的利潤做。與他們玩,我相信你會得到它。

+0

嗯感謝您的答覆,但它並沒有完全解決這個問題。我不明白爲什麼我只能得到相對於容器的座標,如果它有位置:relative;但是如果我保持position:relative;它使元素跳轉:( – Mac 2010-11-22 19:00:39