2012-07-01 9 views
7

¿Cómo puedo obtener de forma continua la posición del ratón mientras el botón está siendo presionada?Obtener ubicación del ratón mientras el ratón está abajo?

Sé que puedo hacer:

<element onclick="functionName(event)"></element> 
<script> 
function functionName(e){ 
e.pageX 
e.pageY 
//do stuff 
} 
</script> 

y sé que puede utilizar el evento onMouseDown, pero ¿cómo iba a conseguir de forma continua la posición mientras que el botón se mantiene presionado hacia abajo?

Por extraño que no pude encontrar en cualquier lugar que me veía.

+1

¿Qué quiere decir por * "continua" *? Prueba 'onmouseover'. – VisioN

+1

Como se mueve el ratón, quiero actualizar la posición de forma continua, pero quiero estar siendo clic con el ratón, no se cierne sobre el elemento .. – maxhud

Respuesta

15

De todos modos, me gustaría sugerir el uso de mousemove evento con verificación si which propiedad de evento es igual a 1 (es decir, botón izquierdo del ratón pulsado):

$("element").on("mousemove", function(e) { 
    if (e.which == 1) { 
     console.log(e.pageX + "/" + e.pageY); 
    } 
});​ 

DEMO:http://jsfiddle.net/HBZBQ/

+3

'e.which == 1' es puro genio. ¡Por qué no pensé en esto! – Bojangles

5

Here es una jsFiddle de tú. Necesita almacenar el estado del botón del mouse en una variable.

jQuery:

$(document).ready(function() { 
    $(document).mousedown(function() { 
     $(this).data('mousedown', true); 
    }); 
    $(document).mouseup(function() { 
     $(this).data('mousedown', false); 
    }); 

    $(document).mousemove(function(e) { 
     if($(this).data('mousedown')) { 
      $('body').text('X: ' + e.pageX + ', Y: ' + e.pageY); 
     } 
    }); 
});​ 

aquí, estoy almacenando hasta el botón del ratón o hacia abajo en estado document usando $(document).data(). Podría haber usado una variable global, pero almacenarla de esta manera hace que el código sea un poco más limpio.

En su función $.mousemove(), sólo se hace lo que quiere si el ratón está presionado. En el código anterior, simplemente estoy imprimiendo la posición del mouse.

+0

¡Agradable! En IE, la respuesta aceptada cambia los valores onmouseover sin el evento mousedown. ¡Este funciona bien en todos los navegadores que probé! ¡Gracias! – pmrotule

Cuestiones relacionadas