Вы можете написать немного кода, чтобы отслеживать состояние левой кнопки мыши, и с небольшой функцией вы можете предварительно обработать переменную события в событии mousemove
.
Чтобы отслеживать состояние LMB, привяжите событие к уровню документа для mousedown
и mouseup
и установите флажок для e.which
, чтобы установить или удалить флаг.
Предварительная обработка выполняется функцией tweakMouseMoveEvent()
в моем коде. Чтобы поддерживать версии IE < 9, вы должны проверить, были ли кнопки мыши выпущены за пределами окна и очистить флаг, если это так. Затем вы можете изменить переданную переменную события. Если e.which
изначально был 1 (без кнопки или LMB), и текущее состояние левой кнопки не было нажато, просто установите e.which
на 0
и используйте это в остальной части вашего mousemove
, чтобы проверить, нет ли нажатых кнопок.
Обработчик mousemove
в моем примере просто вызывает функцию tweak, передающую текущую переменную события, затем выводит значение 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);
});
});
Попробуйте демо здесь: http://jsfiddle.net/G5Xr2/
Пожалуйста, объясните, что вы пытаетесь сделать лучше. Если mouseenter тогда mousedown тогда mouseup, то mouseexit не приводит к кнопке? Как насчет mousedown, затем mouseenter, затем mouseexit, затем mouseup? Вы спрашиваете, записывается ли муссомова на вход, что ни одна кнопка не была нажата? – Fresheyeball
Я пытаюсь выделить текст на странице. Каждое слово находится в своем собственном промежутке. Mouseover + левая кнопка над элементом span должна выделить его, mouseover + правая кнопка должна осветить его. –