内容
.on( "mousemove" [, eventData ], handler )返回值: jQuery
描述: 绑定一个事件处理程序到 "mousemove" 事件。
此页面描述了 mousemove
事件。有关已弃用的 .mousemove()
方法,请参阅 .mousemove()
。
当鼠标指针在元素内部移动时,会向元素发送 mousemove
事件。任何 HTML 元素都可以接收此事件。
例如,考虑以下 HTML
1
2
3
4
5
6
7
|
|
可以将事件处理程序绑定到目标
1
2
3
4
5
|
|
现在,当鼠标指针在目标按钮内移动时,消息将附加到 <div id="log">
在 (399, 48) 处调用 `mousemove` 的处理程序
在 (398, 46) 处调用 `mousemove` 的处理程序
在 (397, 44) 处调用 `mousemove` 的处理程序
鼠标移动事件处理程序在 (396, 42) 处调用。
要手动触发事件,请使用 .trigger( "mousemove" )
。
1
2
3
|
|
在执行完此代码后,单击触发按钮也会追加消息。
鼠标移动事件处理程序在 (undefined, undefined) 处调用。
在跟踪鼠标移动时,通常需要知道鼠标指针的实际位置。传递给处理程序的事件对象包含有关鼠标坐标的一些信息。.clientX
、.offsetX
和 .pageX
等属性可用,但它们在不同浏览器之间的支持情况不同。幸运的是,jQuery 对 .pageX
和 .pageY
属性进行了规范化,以便它们可以在所有浏览器中使用。这些属性提供相对于文档左上角的鼠标指针的 X 和 Y 坐标,如上面的示例输出所示。
请记住,只要鼠标指针移动,即使是移动一个像素,也会触发 mousemove
事件。这意味着在很短的时间内可能会生成数百个事件。如果处理程序需要进行任何重要的处理,或者如果存在多个事件处理程序,这可能会严重影响浏览器的性能。因此,必须尽可能优化 mousemove
处理程序,并在不再需要时取消绑定它们。
一种常见的模式是在 mousedown
处理程序中绑定 mousemove
处理程序,并在相应的 mouseup
处理程序中取消绑定它。如果实现此事件序列,请记住,mouseup
事件可能发送到与 mousemove
事件不同的 HTML 元素。为了解决这个问题,mouseup
处理程序通常应该绑定到 DOM 树中较高位置的元素,例如 <body>
。
示例
当鼠标移过黄色 div 时,显示鼠标坐标。坐标相对于窗口,在本例中为 iframe。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
|
演示
.trigger( "mousemove" )返回值:jQuery
描述:在元素上触发 "mousemove" 事件。
-
添加版本:1.0.trigger( "mousemove" )
-
"mousemove"类型: 字符串字符串
"mousemove"
。
-
参见 .on( "mousemove", ... )
的描述。