我尝试使用mousemove获取相对于元素的鼠标位置。 它工作正常,但是当鼠标悬停一个子元素时,坐标是相对于这个孩子的。我想要相对于父div的鼠标位置,而不是孩子。忽略mousemove上的子元素
见this JSFiddle例如。
var object = document.getElementsByClassName('object'),
scene = document.getElementById('scene');
function initMove() {
for(var i=0; i<object.length; i++) {
object[i].addEventListener("mousemove", function(event) {
//event.stopPropagation();
return false;
}, false);
}
scene.addEventListener("mousemove", function (event) {
//event.stopPropagation();
//event.currentTarget;
moveX = event.offsetX;
moveY = event.offsetY;
console.log(moveX + ' + ' + moveY);
}, false);
}
function init() {
initMove();
document.onselectstart = function(){ return false; }
};
init();
在孩子上添加event.stopPropagation()
没有数据返回。 而且我不确定event.currentTarget
是如何工作的。
我不能使用的mouseenter或隔日鼠标仅控制了,因为我想这是触摸友好(由touchmove替代鼠标移动)。
任何想法?
鼠标坐标必须相对于主div,而不是页面。 我认为event.offsetX是唯一有效的方法来获得这种情况下的坐标 – Julian
他们是,如果你减去主要的div的偏移量。我正在小提琴上工作。等一下。 – danijar
谢谢,但它没有回答我的问题。 在你的例子中,孩子的位置相对于父div的鼠标位置更新,这不是我想要的。 我只想获得鼠标相对于父div的位置,即使鼠标悬停在一个孩子身上(如果孩子不存在)。 – Julian