Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当鼠标悬停在元素上时,div上的Mousemove会发生变化_Javascript_Raphael - Fatal编程技术网

Javascript 当鼠标悬停在元素上时,div上的Mousemove会发生变化

Javascript 当鼠标悬停在元素上时,div上的Mousemove会发生变化,javascript,raphael,Javascript,Raphael,我想在鼠标移动时检测鼠标在holder div中的位置。但是,当我将mose移到holder div中的SVG元素上时,它将采用this元素的相对位置,而不是holder div。有人知道如何防止这种情况吗?下面是我使用的代码: var R = Raphael("holder", canw, canh); $('#holder').mousemove(function (event){ if(mousemove){ position = getPosition(event)

我想在鼠标移动时检测鼠标在holder div中的位置。但是,当我将mose移到holder div中的SVG元素上时,它将采用this元素的相对位置,而不是holder div。有人知道如何防止这种情况吗?下面是我使用的代码:

var R = Raphael("holder", canw, canh);

$('#holder').mousemove(function (event){
    if(mousemove){
      position = getPosition(event);
      console.log(position.x+" - "+position.y);
    }
  });

function getPosition(e) {
    //this section is from http://www.quirksmode.org/js/events_properties.html
    console.log(e);
    var targ;
    if (!e)
        e = window.event;
    if (e.target)
        targ = e.target;
    else if (e.srcElement)
        targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
    console.log(targ);
    // jQuery normalizes the pageX and pageY
    // pageX,Y are the mouse positions relative to the document
    // offset() returns the position of the element relative to the document
    var x = e.pageX - $(targ).offset().left;
    var y = e.pageY - $(targ).offset().top;
    return {"x": x, "y": y};
};

<div id="holder"></div>
var R=Raphael(“持有人”,加拿大,加拿大);
$('#holder').mousemove(函数(事件){
if(mousemove){
位置=获取位置(事件);
控制台日志(位置x+“-”+位置y);
}
});
函数getPosition(e){
//本节来自http://www.quirksmode.org/js/events_properties.html
控制台日志(e);
var targ;
如果(!e)
e=窗口事件;
如果(如目标)
targ=e.target;
else if(如src元素)
targ=e.SRC元件;
if(target.nodeType==3)//击败Safari bug
target=target.parentNode;
控制台日志(targ);
//jQuery规范化pageX和pageY
//pageX,Y是相对于文档的鼠标位置
//offset()返回元素相对于文档的位置
var x=e.pageX-$(target).offset().左;
变量y=e.pageY-$(target).offset().top;
返回{“x”:x,“y”:y};
};
您应该使用而不是
事件。target
-这将为您提供侦听器附加到的元素,而不是接收事件的元素。因此,您的位置将相对于
#holder
元素进行计算

因为您使用的是jQuery,所以这应该也适用于InternetExplorer(显然是jQuery)。其他IE兼容性黑客(
window.event
event.srceelement
)也不需要