2011-01-06 5 views
102

jQuery .offsetメソッドで要素の位置を取得および設定する方法は?jQueryで位置を取得および設定する.offset()

divとすると、​​と別のlayer2があります。​​の位置を取得して、同じ位置をlayer2に設定するにはどうすればよいですか?

+6

デニス、あなたもjQueryのウェブサイト上.offset()メソッドをチェックしましたか?また、以下のスティーブの答えを受け入れてみませんか? – Rafid

+1

@Rafid彼女は基本的に戻って来なかった – jcollum

+6

私は彼女のポイントを持つことはできますか? – ganders

答えて

182
//Get 
var p = $("#elementId"); 
var offset = p.offset(); 

//set 
$("#secondElementId").offset({ top: offset.top, left: offset.left}); 
+3

ニースとクリア/クリーンな答え。 – sabiland

+7

'offset'オブジェクト全体を渡すことができるので、' // set'は次のようになります: '$("#secondElementId ")。offset(offset)' – mecampbellsoup

+0

ちょっと! divの右下にどのように設定できますか?オフセットの底、右のプロパティはありません – JerryGoyal

15

それはなんとかですが、あなたはoffset()を使用すると、ドキュメントに要素の相対的な位置を設定することを知っている必要があります:

$('.layer1').offset($('.layer2').offset()); 
34

私は別のオプションをお勧めします。 jQuery UIには、要素を相対的に配置できる新しい位置機能があります。詳細なドキュメントとデモは、http://jqueryui.com/demos/position/#option-offsetを参照してください。ここで

は、位置機能を使用して要素を配置する一つの方法です。ここで

var options = { 
    "my": "top left", 
    "at": "top left", 
    "of": ".layer1" 
}; 
$(".layer2").position(options); 
+13

この回答は2回、何の説明もありませんでした。理由を教えてください。あなたが私の答えを落とすならば。ありがとう! – KSev

+2

これは、OPがjQueryだけを要求している間にjQuery UIを使用するためかもしれません。 – pram

+6

多くの場合、人々はダウン投票でtoooooを遠くに行きます。たとえそれがOPの拡張であっても、より広い答えが他の人にとって役に立たないとは想定しない。私が「これは適切な質問ではないので閉じて」から始まらないでください;) – landed

0

はオプションです。これはちょうどx座標です。

var div1Pos = $("#div1").offset(); 
var div1X = div1Pos.left; 
$('#div2').css({left: div1X}); 
+0

offset()。leftとcss.leftは同じものではなく、ページ構造によって同じ値を持っているかもしれません。 – Kalle

+0

I + 1'd。それは私のためにちょうどうまくいくように思われ、それは本質的に85 +票を持っている下のunchosen答えと同じです。 –

+0

私のために働いた。投稿していただきありがとうございます! –

0
var redBox = $(".post"); 

var greenBox = $(".post1"); 

var offset = redBox.offset(); 

$(".post1").css({'left': +offset.left}); 
$(".post1").html("Left :" +offset.left); 

http://jsfiddle.net/va836/159/

関連する問題