2011-10-27 26 views
2

我有一個問題我不明白,請大家幫忙:jQuery的位置

我已經開發的HTML頁面的圖像,使他們可拖動使用jQuery UI的幫助,我的位置設置這些圖像相對並給左和頂部的像素,這裏是鏈接的頁面http://ayyashsigns.com/lab/circles.html

我設置:

  • B1的位置是:風格= 「左:180像素;頂部:-334px; ......」
  • B2的位置: style =「left:233px; top:-546px; ...」
  • b3 position:style =「left:422px;頂部:-350px; ...「
  • mainb position:style =」left:93px;頂部:-330px; ......」

的問題是:當我運行

  • $( '#跨度B1')位置()頂我得到293
  • 。 $('span#b1')。position()。left我得到180
  • $('span#b2')。position()。top我得到81
  • $('span#b2')。position ().left我得到289
  • $('span#b3')。position()。top我得到277
  • $( '跨度#B3')。位置()。離開我得到534
  • $( '跨度#mainb')。位置()。頂我得到297
  • $( '跨度#mainb' ).position()。left我得到261

爲什麼所有這些不同,我需要使用jQuery以編程方式訪問圖像。任何人都可以向我解釋這一點,以及如何解決它以給出圖像的確切位置。

這裏又是鏈接:提前任何幫助my page circles

感謝名單,

問候,

回答

1

<p id="monitor">更改爲<div id="monitor">並記得更改</p>

添加到您的樣式表:

body { 
    margin: 0; 
} 

#content { 
    position:relative; 
} 

#b1 { 
    top: ##px; 
    left: ##px; 
    position:absolute; 
} 

使用position:絕對爲您所有的圈子,找到了正確的頂部和左側像素。它應該從屏幕左上角開始top:0px; left: 0px;

現在,當您使用$('span#b1').position().top它會給你正確的px。

僅供參考,.position將返回相對於父項的px,.offset將返回相對於該文檔的px。

+0

thanx爲我的幫助:) :) :) –

+0

我需要幫助jQuery,設置圓圈後正確位置,我想要一些插件或命令讓jQuery將圓圈返回到它們設置的位置,例如。如果用戶將b1從其位置移動到另一位置,則b1將緩慢返回到其原始位置。 –

+0

將還原選項添加到您的可拖動。你可以使用revertDuration來設置速度。 .draggable({revert:true,revertDuration:1000}); – Godzilla

2

「的.POSITION()方法允許我們檢索元素相對於一個的當前位置到抵消家長「。

如果你想讓你實際使用的CSS值,請嘗試使用:

$('span#b1').css('top'); 

曬。

+0

是的,這將返回相同的值,我把它放在樣式中,但是這是DOM中的圓圈的確切位置,以及爲什麼當我添加更多的圓圈(球)時頁面的高度增加,我需要更改以編程方式顯示圖像的位置 –

+0

要更改css位置,只需設置css屬性$('span#b1')。css('top','-350px');這個位置,你的源代碼是相對於元素的原始位置。 –

0

您正在獲取跨度的位置,它不是塊元素。你想要得到的跨度內的圖像的位置:

$('span#b1 img').offset().top 
+0

我想設置使用jQuery的圓的位置,就像在風格如何做到這一點?我很困惑,如果我運行你輸入的代碼給我442,如果我運行$('span#b1 img')。position()。top我得到-40 –

+0

這是因爲你使用** position:relative ; **裏面的每個圈子。如果你正在嘗試使用這種遊戲,我強烈建議使用**絕對定位**。 –

+0

或者,如果你想要去你的值,設置身體標記和p#監視器的邊距爲0px –

0

我認爲這將是最適合你在這種情況下,在每個圓的使用position:absolute;,並保持position:relative#content。 這樣你將得到正確的值position().topposition().left