2013-11-15 14 views
5

का उपयोग किये बिना किसी तत्व के पेजएक्स और पेज वाई को कैसे प्राप्त करें e.pageX और e.pageY का उपयोग किए बिना किसी भी तत्व की स्थिति में वैसे भी है।इवेंट

चेक इस fiddle

बेला वास्तव में क्या im पूछने की कोशिश कर रहा पर एक गरीब प्रयास है, लेकिन मैं हालांकि एक दृश्य उदाहरण बेहतर होगा। हालांकि मैं: क्या मुझे पता है चाहता हूँ, यह

document.getElementByID('elementID'); 

या शायद

document.getElementsByTagName('TagName'); 

संपादित करें का उपयोग कर का हवाला एक्स और डोम पर किसी भी तत्व के वाई समन्वय को खोजने के लिए संभव है FddDLE में Jquery का उपयोग किया है, मैं केवल जावास्क्रिप्ट का उपयोग कर एक संभावित समाधान चाहते हैं।

उत्तर

9

आप का उपयोग

document.getElementById("elementID").offsetTop; 
document.getElementById("elementID").offsetLeft; 

MDN का संदर्भ लें कर सकते हैं। वे ऑफसेट को मूल तत्व से वापस कर देते हैं। यदि आपको पूरे शरीर के संबंध में तत्व की ऑफसेट की आवश्यकता है तो यह अधिक कठिन हो सकता है, क्योंकि आपको श्रृंखला में प्रत्येक तत्व के ऑफसेट को जोड़ना होगा।
.getElementsByTagName के लिए सम्मानपूर्वक, क्योंकि डोम में प्रत्येक ऑब्जेक्ट में इन गुण हैं।

.getBoundingClientRect भी worth a look है।

var clientRectangle = document.getElementById("elementID").getBoundingClientRect(); 
console.log(clientRectangle.top); //or left, right, bottom 
1

मुझे लगता है कि ऑफ़सेट() को काम करना चाहिए।

$(element).offset() //will get {top:.., left:....} 
2

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script> 
 
$("#something").click(function(e){ 
 
    var parentOffset = $(this).parent().offset(); 
 
    //or $(this).offset(); if you really just want the current element's offset 
 
    var relX = e.pageX - parentOffset.left; 
 
    var relY = e.pageY - parentOffset.top; 
 
}); 
 
</script>

0

आप लगभग सभी jQuery सामान यहाँ पा सकते हैं: http://youmightnotneedjquery.com/

$(el).offset(); 

एक ही रूप में:

var rect = el.getBoundingClientRect(); 

{ 
    top: rect.top + document.body.scrollTop, 
    left: rect.left + document.body.scrollLeft 
} 
संबंधित मुद्दे