2011-01-06 26 views
102

Bir öğenin konumunu jQuery .offset yöntemiyle nasıl alabilir ve ayarlayabilirsiniz?jQuery .offset() ile konum al ve ayarla

Diyelim ki bir layer1 ve başka bir layer2. layer1'un konumunu nasıl alabilirim ve aynı konumu layer2 olarak ayarlayabilir miyim?

+6

Denise, hatta jQuery web sitesinde .offset() yöntemi kontrol ettin mi? Ayrıca, neden Steve'in cevabını kabul etmiyorsun ?! – Rafid

+1

@Rafid temelde hiç geri dönmedi – jcollum

+6

Puanlarını alabilir miyim? – ganders

cevap

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

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

Güzel ve açık/temiz bir cevap. – sabiland

+7

Sadece "offset" nesnesinin tamamını iletebilirsiniz, böylece // set 'olur: '$ (" # secondElementId "). Offset (ofset)' – mecampbellsoup

+0

hey! div'un alt ve sağına nasıl ayarlayabilirim? – JerryGoyal

15

Yapılabilir ama offset() kullanarak belgeye eleman göre konumunu belirlediğini bilmek zorunda: Ben başka bir seçenek tavsiye

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

. jQuery UI, öğeleri birbirine göre konumlandırmanıza izin veren yeni bir konum özelliğine sahiptir. Tam dökümantasyon ve demo için bakınız: http://jqueryui.com/demos/position/#option-offset.

Burada pozisyon özelliğini kullanarak öğeleri konumlandırmak için şu yöntemi kullanabilirsiniz:

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

Ofset alt, sağ özelliği yoktur Bu cevap hiçbir açıklama olmadan, iki kez aşağı oy edildi. Lütfen nedenini söyle, cevabımı indirirsen. Teşekkürler! – KSev

+2

Belki de jQuery UI kullanırken OP yalnızca jQuery sorar. – pram

+6

sık sık insanlar aşağı oylama ile tooooo gidin. OP'in genişlemesi olsa bile, daha geniş bir cevabın başkalarına yararsız olduğunu düşünmeyelim. Beni 'bu kadar uygun bir soru değil' kapalı başladı 'beni almayın;) – landed

0

bir seçenektir. Bu sadece x koordinatları içindir.

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

offset() .dr ve css.left aynı şey değildir, sayfa yapısına bağlı olarak aynı değerlere sahip olabilir veya olmayabilir. – Kalle

+0

I + 1'lendi. Benim için gayet iyi çalışıyor gibi görünüyor ve Asıl 85'den fazla oy olan aşağıdaki kararsız cevapla aynı. –

+0

Benim için çalıştı. Katkınız için teşekkürler! –

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/

İlgili konular