JQuery के साथ स्थिति प्राप्त करें और सेट करें .offset ()


106

JQuery .offsetविधि के साथ एक तत्व की स्थिति कैसे प्राप्त करें और सेट करें ?

मान लीजिए कि मेरे पास एक div layer1और दूसरा है layer2। मैं layer1उसी स्थिति को कैसे प्राप्त कर सकता / सकती हूं layer2?


6
Denise, क्या आपने jQuery वेबसाइट पर .offset () विधि की भी जांच की थी? इसके अलावा, आप स्टीव के जवाब को नीचे स्वीकार क्यों नहीं करते हैं?
रफीद

1
@ रैफिड वह मूल रूप से कभी वापस नहीं आईं
jcollum

6
क्या मुझे उसके अंक मिल सकते हैं?
जंडर्स

जवाबों:


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

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

7
आप बस पूरी offsetवस्तु को पास कर सकते हैं , इसलिए //setयह बन जाएगा: $("#secondElementId").offset(offset)
mecampbellsoup

हे! मैं नीचे और तलाक के अधिकार के लिए कैसे निर्धारित कर सकता हूं? ऑफसेट में कोई नीचे, सही संपत्ति नहीं है
जेरीगोपाल

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
शायद ऐसा इसलिए है क्योंकि आप jQuery UI का उपयोग करते हैं जबकि OP केवल jQuery से पूछता है।
प्राम

7
अक्सर लोग डाउन वोटिंग से बहुत दूर चले जाते हैं। यह मानकर न चलें कि एक व्यापक उत्तर दूसरों के लिए बेकार है, भले ही यह ओपी का विस्तार हो। नहीं किए जाते हैं मुझ पर 'बंद के रूप में यह एक उचित सवाल नहीं है' शुरू कर दिया;)
उतरा

@ शक - मैं भविष्य से हूं। jQuery के पास अभी भी एक सेटर नहीं है .position... देखें: api.jquery.com/position
Koshinae

@Koshinae यह jQuery "UI" का हिस्सा है। ऊपर लिंक देखें या jqueryui.com/position का प्रयास करें । इसके अलावा, यदि आप jQuery का उपयोग कर रहे हैं, तो आप angularJS 2.0 का उपयोग करने पर विचार कर सकते हैं। हालाँकि, मुझे उम्मीद है कि आप विरासत कोड को बनाए रख रहे हैं।
केसव

16

यह उल्लेखनीय है, लेकिन आपको यह जानना होगा कि offset()दस्तावेज़ के सापेक्ष तत्व की स्थिति का उपयोग करना:

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

0

यहाँ एक विकल्प है। यह सिर्फ x निर्देशांक के लिए है।

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

ऑफसेट () छोड़ दिया और css.left एक ही बात नहीं है, वे पृष्ठ संरचना के आधार पर समान मान हो सकते हैं या नहीं भी हो सकते हैं।
कलल

मैंने + 1 ली। यह मेरे लिए ठीक काम करता है और यह अनिवार्य रूप से नीचे दिए गए उत्तर के समान है, जिसमें 85+ वोट हैं।
पॉल नेल्सन बेकर

मेरे लिए काम किया। योगदान के लिए धन्यवाद!
Erlend KH

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.