【问题标题】:jQuery: event "mouseover"-likejQuery:事件“鼠标悬停”-like
【发布时间】:2015-01-16 08:06:38
【问题描述】:

我需要一个事件,每次我将鼠标移到某个 HTML 元素上方时都会调用该事件。但是我需要它在我移动的时候一直触发,而不仅仅是在我输入某个元素时(比如 mouseover、mouseenter 或 hover 事件)。

几年前我看到很多人试图做相反的功能(鼠标悬停元素在我悬停在某个 div 上方时一直在触发)但是每次我测试这个事件时,它只有在我进入时才会触发一些分区。每次我移动鼠标并且我在被监视的元素上方时,我都需要它来触发它,这样我就可以确定鼠标与该元素的相对位置。

是否有我遗漏的事件或者是否有一些解决方法如何仅基于悬停(而不是单击、dbclick、..)来跟踪某些元素中的鼠标位置?

【问题讨论】:

  • mousemove ???顺便说一句,你应该经常检查文档:api.jquery.com/category/events/mouse-events
  • 是的,就是这样。哦,我的上帝,对不起,我没有自己解决,我几乎尝试了每一个事件,但这个事件就是这样结束的。非常感谢,我现在很惭愧
  • 没有理由感到羞耻,现在你知道该往哪里看 ;)

标签: javascript jquery html


【解决方案1】:

添加 mouseover 事件,然后绑定到 mousemove。 我给你做了一个小例子,让你在 div 上移动时查看坐标。

$("#mydiv").bind('mousemove', function(event) 
{ 
    var offsetleft = this.offsetLeft;
    var offsettop = this.offsetTop;
    var coordX = event.pageX - offsetleft;
    var coordY = event.pageY - offsettop;
    $("#coords").html("X: " + coordX + " Y: " + coordY);                                 
});

http://jsfiddle.net/dVqwH/2/

【讨论】:

  • 非常好用,谢谢!
  • 也谢谢你,我刚刚更新了它,给你鼠标指针在 div 内的坐标,而不是整个页面。
【解决方案2】:

尝试使用鼠标移动:http://api.jquery.com/mousemove/

$( "#target" ).mousemove(function( event ) {
  var msg = "Handler for .mousemove() called at ";
  msg += event.pageX + ", " + event.pageY;
  $( "#log" ).append( "<div>" + msg + "</div>" );
});

【讨论】:

    【解决方案3】:

    您可以绑定到mousemove jQuery event

    $( "html" ).mousemove(function( event ) {
      ...
    });
    

    jsFiddle demo

    在示例中,我绑定到所有文档,但您可以使用 jquery selectors 轻松绑定到感兴趣的元素

    【讨论】:

    • 除非您将其绑定到您的 HTML 元素,而不是 body
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2011-11-09
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多