Puede escribir un poco de código para realizar un seguimiento del estado del botón izquierdo del mouse, y con una pequeña función puede preprocesar la variable de evento en el evento mousemove
.
para realizar un seguimiento del estado de la LMB, se unen un evento para documentar el nivel de mousedown
y mouseup
y comprobar si hay e.which
configurar o borrar la bandera.
El preprocesamiento se realiza mediante la función tweakMouseMoveEvent()
en mi código. Para admitir las versiones de IE < 9, debe verificar si los botones del mouse se lanzaron fuera de la ventana y borrar la bandera si es así. Luego puede cambiar la variable del evento pasado. Si e.which
era originalmente 1 (sin botón o LMB) y no se presiona el estado actual del botón izquierdo, simplemente configure e.which
en 0
, y úselo en el resto de su evento mousemove
para verificar que no haya botones presionados.
El controlador mousemove
en mi ejemplo simplemente llama a la función de ajuste pasando la variable de evento actual, luego da como resultado el valor de e.which
.
$(function() {
var leftButtonDown = false;
$(document).mousedown(function(e){
// Left mouse button was pressed, set flag
if(e.which === 1) leftButtonDown = true;
});
$(document).mouseup(function(e){
// Left mouse button was released, clear flag
if(e.which === 1) leftButtonDown = false;
});
function tweakMouseMoveEvent(e){
// Check from jQuery UI for IE versions < 9
if ($.browser.msie && !e.button && !(document.documentMode >= 9)) {
leftButtonDown = false;
}
// If left button is not set, set which to 0
// This indicates no buttons pressed
if(e.which === 1 && !leftButtonDown) e.which = 0;
}
$(document).mousemove(function(e) {
// Call the tweak function to check for LMB and set correct e.which
tweakMouseMoveEvent(e);
$('body').text('which: ' + e.which);
});
});
Pruebe una demostración en vivo aquí: http://jsfiddle.net/G5Xr2/
Explique qué está tratando de hacer mejor. ¿Debería mouseenter y luego mousedown mouseup entonces resultado de mouse exit sin botón? ¿Qué pasa con mousedown luego mouseenter luego mouseexit luego mouseup? ¿Está preguntando si el mouse se mueve a través de la entrada, se registra el hecho de que no se presionó ningún botón? – Fresheyeball
Estoy tratando de resaltar el texto en la página. Cada palabra está en su propio lapso. El mouseover + botón izquierdo sobre un elemento span debe resaltarlo, mouseover + botón derecho debe iluminarlo. –