2012-05-16 32 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