Javascript .classname元素需要mousemove事件,即使光标不在其上。如何获取事件到元素?

Javascript .classname元素需要mousemove事件,即使光标不在其上。如何获取事件到元素?,javascript,jquery,Javascript,Jquery,当光标不在元素本身的顶部时,是否有方法获取mousemove事件 这就是我目前拥有的: $(document).on('mousemove', '.className', OnMouseMove); function OnMouseMove(e) { var clientCoords = "( " + e.clientX + ", " + e.clientY + " )"; var pageCoords = "( " + e.pageX + ", " + e.pageY + "

当光标不在元素本身的顶部时,是否有方法获取mousemove事件

这就是我目前拥有的:

$(document).on('mousemove', '.className', OnMouseMove);

function OnMouseMove(e) {
    var clientCoords = "( " + e.clientX + ", " + e.clientY + " )";
    var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
    var offsetCoords = "( " + e.offsetX + ", " + e.offsetY + " )";

    console.log('clientCoords: '+clientCoords+', pageCoords: '+pageCoords+', offsetCoords: '+offsetCoords);
}
我有很多使用.className的元素,我将在其中添加动画,但我需要鼠标坐标,即使光标不在元素顶部。我该怎么做

$(document).on('mousemove', OnMouseMove);
这将使您获得基于文档的事件。 不管它在哪里,这是唯一能得到它的方法。 然后,您可以检查它是否位于特定元素上,可以将鼠标悬停在.classname元素上以切换booleaen或其他内容

嗯,, -特德

正在编辑以添加从注释请求的其他代码示例

要将元素添加到cachedElems数组中,您需要将一些代码添加到将它们添加到页面的任何代码中,或者重新定义数组

数组需要全局声明,或者至少在每个函数可以到达的上下文中声明

比如

<script>
var cachedElems;

$(document).ready(....

只需迭代鼠标移动函数中的元素

$function{ $document.on mousemove,mousemove; var cachedElems=$'.tracker'; 函数mousemove{ var pageX=e.pageX, pageY=e.pageY; $.eachcachedElems,functioni,elem{ elem=$elem; var elemX=pageX-elem.offset.left, elemY=pageY-elem.offset.top; $elem.text '第x页:'+pageX+'\n'+ '第y页:'+pageY+'\n'+ “\n”+ 'elem x:'+elemX+'\n'+ 'elem y:'+elemY+'\n' ; }; } };
绑定到文档而不进行事件委派。我希望在每个具有.className的元素上都发生基于鼠标坐标的事情。@rotaercz:这很好,您可以在处理程序中执行,但是如果您希望在光标不在任何事件上时接收mousemove事件,则必须在光标所在的位置捕获它。文档是您的最佳选择,很有可能。那么我该怎么做呢?你的问题中的代码有什么问题吗?那么我的.className元素是如何获得坐标的呢?如果不真正理解你在做什么,很难说清楚…可能你可以将坐标设置为全局变量或至少在OnMouseMove函数的范围之外进行更新,因此,鼠标的输入/离开功能可以读取这些值并对它们进行处理。其他人的答案与我要查找的答案非常接近。然而,当我检查控制台时,我没有得到他的答案的输出。你能看一下吗?只是为了确定,你把代码包装在一个doc-ready函数中了,是吗?他的示例对我来说很好…是的,它位于$document.readyfunction{test;};测试其他人的答案。这看起来很接近我想要的。我试过这个,var cursorDistanceY=Math.abselem.position.top-e.clientY;console.log'cursorDistanceY'+i+'+elem+':'+cursorDistanceY;似乎不起作用?我在加载javascript之后加载带有.classname元素的页面。这会使它停止工作吗?@rotaercz-更新以获取每个元素的相对位置。@rotaercz-您不必缓存元素,但如果每次鼠标移动时都要在DOM中搜索这些元素,它的伸缩性就不好。您使用的确切缓存策略取决于您的需要和约束。cachedElems为空。我想这是因为我正在通过ajax加载带有.classname元素的内容?但我不确定我该如何填充缓存。
<script>
var cachedElems;

$(document).ready(....
cachedElems = $('.className');