.mousemove()
.mousemove( handler(eventObject) ) 返回: jQuery
描述: 為 "mousemove" 事件綁定一個處理函數(shù),或者觸發(fā)元素上的 "mousemove" 事件。
-
version added: 1.0.mousemove( handler(eventObject) )
handler(eventObject)每次事件觸發(fā)時會執(zhí)行的函數(shù)。
-
version added: 1.4.3.mousemove( [ eventData ], handler(eventObject) )
eventData將要傳遞給事件處理函數(shù)的數(shù)據(jù)映射。
handler(eventObject)每次事件觸發(fā)時會執(zhí)行的函數(shù)。
version added: 1.0.mousemove()
這個函數(shù)的第一種用法是 .bind('mouseleave', handler)
的快捷方式,第二種用法是 .trigger('mouseleave')
的快捷方式。
當鼠標指針在元素內(nèi)移動時,mousemove
事件就會被發(fā)送到這個元素,任何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 ' + event.pageX + ', ' + event.pageY; $('#log').append('<div> + msg + '</div>'); });
現(xiàn)在當鼠標指針在目標元素中移動時,以下信息將被添加到<div id="log">:
Handler for .mousemove() called at (399, 48)
Handler for .mousemove() called at (398, 46)
Handler for .mousemove() called at (397, 44)
Handler for .mousemove() called at (396, 42)
當不同的元素被點擊時我們也可以觸發(fā)這個事件:
$('#other').click(function() { $('#target').mousemove(); });
這些代碼執(zhí)行后,點擊Trigger the handler同樣添加這些信息:
Handler for .mousemove() called at (undefined, undefined)
當足跡鼠標移動,我們通常需要知道實際的鼠標指針的位置。事件對象傳遞給處理器包含了一些有關鼠標的坐標。比如.clientX
, .offsetX
, 和 .pageX
屬性是有效的,但對他們的支持不同瀏覽器。幸運的是,jQuery的規(guī)范了.pageX
和.pageY
屬性,以便他們能夠在所有瀏覽器上使用。這些屬性提供了鼠標指針位置相對于頁面的左上角的X和Y坐標,例如上面例子的輸出。
我們必須記住, mousemove
事件是當鼠標指針移動時觸發(fā)的,即使是一個像素。這意味著數(shù)百個事件在短時間內(nèi)產(chǎn)生。如果處理器做任何重大的處理,或者如果該事件存在多個處理函數(shù),這可能造成瀏覽器的嚴重的性能問題。因此,優(yōu)化mousemove
處理程序盡可能,這一點很重要,和當他們不再需要時盡快解除綁定。
一個常見的模式是在mousedown
處理器內(nèi)部綁定mousemove
處理器,并在一個相應mouseup
處理器取消綁定它。如果實施這一系列事件,記得mouseup
事件可能會被發(fā)送到不同的HTML元素比mousemove
事件??紤]到這一點,在mouseup
處理程序通常應綁定到一個在DOM樹層級高的元素上,比如<body>
。
Example:
Show the mouse coordinates when the mouse is moved over the yellow div. Coordinates are relative to the window, which in this case is the iframe.
<!DOCTYPE html>
<html>
<head>
<style>
div { width:220px; height:170px; margin;10px; margin-right:50px;
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="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<p>
Try scrolling too.
<span>Move the mouse over the div.</span>
<span> </span>
</p>
<div></div>
<script>
$("div").mousemove(function(e){
var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
var clientCoords = "( " + e.clientX + ", " + e.clientY + " )";
$("span:first").text("( e.pageX, e.pageY ) - " + pageCoords);
$("span:last").text("( e.clientX, e.clientY ) - " + clientCoords);
});
</script>
</body>
</html>