在Jquery里面offset()方法是返回或设置匹配元素相对于文档的偏移(位置)。
如果不用Jquery想取得某dom元素的文档偏移,理所当然想到了源生的offsetTop/offsetLeft。
然而~
源生的offsetTop/offsetLeft返回的并不是相对于文档,而是相对于父级。
那么~
获得相对于文档的偏移,我们就需要做一下处理。
首先我们要用到offsetParent这个属性。
jquery也有个同名方法,作用是返回最近的祖先定位元素。
注意哦,不是父级,是祖先定位元素。
所以思路就是,把自己包括所有祖先的offsetTop/offsetLeft相加,就得到了文档的相对偏移。
function getElementMouseCoords(ele){
var o = ele,
t = 0,
l = 0;
while(o.tagName != 'BODY'){
t += o.offsetTop;
l += o.offsetLeft;
o = o.offsetParent;
}
return {
top:t,
left:l
};
};