2012-05-16 112 views
1

我有一個父Div(溢出:自動)兩個Div兩個Div都很大,所以我得到父母的滾動,問題是我得到可變的鼠標座標(onclick事件)對於內線的div時,我向上和向下滾動(有時甚至是負值),這裏是我如何計算鼠標的相對值鼠標座標相對Div內部父div與滾動

jQuery(document).ready(function(){ 
$("#MnDiv").click(function(e){ 
var clientXRel = e.clientX - this.offsetLeft; 
var clientYRel = e.clientY - this.offsetTop; 
var clientCoords = "(" + e.clientX + ", " + e.clientY + ")"; 
var clientCoordsRel = "(" + clientXRel + ", " + clientYRel + ")"; 
$("span:first").text("(e.clientX, e.clientY) : " + clientCoords); 
$("span:last").text("(clientXRel , clientYRel ) : " + clientCoordsRel 
+  " (offsetLeft , offsetTop ) : " + this.offsetLeft+ ", " this.offsetTop); 
}); 

所以現在的問題是如何得到正確的座標相對於內部事業部沒有問題在哪裏滾動? 完整實施例(的jsfiddle)Here

預先感謝

回答

4

使用jQuery的事件可變因素.pageX.pageY和元件偏移功能.offset().top.offset().left

所以它看起來像

var clientXRel = e.pageX- $(this).offset().left; 
var clientYRel = e.pageY - $(this).offset().top; 

http://jsfiddle.net/PNLU3/3/

+0

非常感謝您 –

+0

當我試着在一些代碼中實現這個時,我得到一個錯誤:「'offset()。left'爲null或不是一個對象」。任何想法爲什麼這可能會出現?如果它被用於從事件中分離出來的方法中,那麼它會不會是任何事情的「非常指」? – Matt

+0

你確定'這個'是你調用代碼時點擊元素嗎? – Gilsham