Bạn có thể viết một chút mã để theo dõi trạng thái của nút chuột trái và với một chức năng nhỏ, bạn có thể xử lý biến sự kiện trong sự kiện mousemove
.
Để theo dõi trạng thái của LMB, liên kết sự kiện với cấp tài liệu cho mousedown
và mouseup
và kiểm tra e.which
để đặt hoặc xóa cờ.
Quá trình xử lý trước được thực hiện bởi hàm tweakMouseMoveEvent()
trong mã của tôi. Để hỗ trợ các phiên bản IE < 9, bạn phải kiểm tra xem các nút chuột đã được phát hành bên ngoài cửa sổ và xóa cờ nếu có. Sau đó, bạn có thể thay đổi biến sự kiện đã qua. Nếu e.which
ban đầu là 1 (không có nút hoặc LMB) và trạng thái hiện tại của nút trái không được nhấn, chỉ cần đặt e.which
thành 0
và sử dụng trong phần còn lại của sự kiện mousemove
để kiểm tra không có nút nào được nhấn.
Trình xử lý mousemove
trong ví dụ của tôi chỉ gọi hàm tinh chỉnh truyền biến sự kiện hiện tại qua, sau đó xuất kết quả giá trị 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);
});
});
Hãy thử một bản demo sống ở đây: http://jsfiddle.net/G5Xr2/
Vui lòng giải thích những gì bạn đang cố gắng làm tốt hơn. Nên mouseenter sau đó mousedown sau đó mouseup sau đó mouseexit kết quả trong không có nút? Điều gì về mousedown sau đó mouseenter sau đó mouseexit sau đó mouseup? Bạn có hỏi rằng nếu mousemove s trên đầu vào, thực tế là không có nút nào được nhấn được ghi lại? – Fresheyeball
Tôi đang cố đánh dấu văn bản trong trang. Mỗi từ nằm trong nhịp riêng của nó. Mouseover + nút bên trái trên một phần tử span nên làm nổi bật nó, di chuột qua + nút bên phải sẽ làm sáng tỏ nó. –