当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery .mousemove()用法及代码示例


用法
.mousemove( handler ) => jQuery

说明:将事件处理程序绑定到 "mousemove" JavaScript 事件,或在元素上触发该事件。

  • 添加的版本:1.0.mousemove( handler )

    • handler
      类型:Function(Event eventObject)
      每次触发事件时执行的函数。
  • 添加的版本:1.4.3.mousemove( [eventData ], handler )

    • eventData
      类型:Anything
      包含将传递给事件处理程序的数据的对象。
    • handler
      类型:Function(Event eventObject)
      每次触发事件时执行的函数。
  • 添加的版本:1.0.mousemove()

    • 此签名不接受任何参数。

此方法是前两个变体中.on( "mousemove", handler ) 和第三个变体中.trigger( "mousemove" ) 的快捷方式。

当鼠标指针在元素内移动时,mousemove 事件被发送到元素。任何 HTML 元素都可以接收此事件。

例如,考虑 HTML:

<div id="target">
  Move here
</div>
<div id="other">
  Trigger the handler
</div>
<div id="log"></div>

事件处理程序可以绑定到目标:

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

现在,当鼠标指针在目标按钮内移动时,消息将附加到 <div id="log">:

.mousemove() 的处理程序在 (399, 48) 调用
.mousemove() 的处理程序在 (398, 46) 调用
.mousemove() 的处理程序在 (397, 44) 调用
.mousemove() 的处理程序在 (396, 42) 调用

要手动触发事件,请应用不带参数的.mousemove()

$( "#other" ).click(function() {
  $( "#target" ).mousemove();
});

执行此代码后,单击 Trigger 按钮也会附加消息:

.mousemove() 的处理程序调用于(未定义,未定义)

在跟踪鼠标移动时,通常需要知道鼠标指针的实际位置。传递给处理程序的事件对象包含有关鼠标坐标的一些信息。 .clientX.offsetX.pageX 等属性可用,但对它们的支持因浏览器而异。幸运的是,jQuery 标准化了 .pageX.pageY 属性,以便它们可以在所有浏览器中使用。这些属性提供鼠标指针相对于文档左上角的 X 和 Y 坐标,如上面的示例输出所示。

请记住,只要鼠标指针移动,即使是像素移动,都会触发 mousemove 事件。这意味着可以在非常短的时间内生成数百个事件。如果处理程序必须进行任何重要的处理,或者存在多个事件处理程序,这可能会严重消耗浏览器的性能。因此,重要的是尽可能优化mousemove 处理程序,并在不再需要它们时立即解除绑定。

一种常见的模式是从 mousedown 处理程序中绑定 mousemove 处理程序,并从相应的 mouseup 处理程序中解除绑定。如果实现此事件序列,请记住 mouseup 事件可能会发送到与 mousemove 事件不同的 HTML 元素。考虑到这一点,mouseup 处理程序通常应该绑定到 DOM 树中较高的元素,例如 <body>

其他注意事项:

  • 由于 .mousemove() 方法只是 .on( "mousemove", handler ) 的简写,因此可以使用 .off( "mousemove" ) 进行分离。

例子:

当鼠标移到黄色 div 上时显示鼠标坐标。坐标是相对于窗口的,在这种情况下是 iframe。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>mousemove demo</title>
  <style>
  div {
    width: 220px;
    height: 170px;
    margin: 10px 50px 10px 10px;
    background: yellow;
    border: 2px groove;
    float: right;
  }
  p {
    margin: 0;
    margin-left: 10px;
    color: red;
    width: 220px;
    height: 120px;
    padding-top: 70px;
    float: left;
    font-size: 14px;
  }
  span {
    display: block;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p>
  <span>Move the mouse over the div.</span>
  <span>&nbsp;</span>
</p>
<div></div>
 
<script>
$( "div" ).mousemove(function( event ) {
  var pageCoords = "( " + event.pageX + ", " + event.pageY + " )";
  var clientCoords = "( " + event.clientX + ", " + event.clientY + " )";
  $( "span" ).first().text( "( event.pageX, event.pageY ) : " + pageCoords );
  $( "span" ).last().text( "( event.clientX, event.clientY ) : " + clientCoords );
});
</script>
 
</body>
</html>

演示:

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .mousemove()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。