2012-07-01 55 views
7

Làm cách nào để liên tục nhận được vị trí của chuột trong khi nút của nó đang được giữ?Nhận vị trí chuột trong khi di chuột xuống?

Tôi biết tôi có thể làm:

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

và tôi biết bạn có thể sử dụng các sự kiện onmousedown, nhưng làm thế nào tôi liên tục nhận được vị trí trong khi nút vẫn giữ xuống?

Thật kỳ lạ tôi không thể tìm thấy địa điểm này ở bất cứ đâu tôi nhìn.

+1

Bạn có ý nghĩa gì bởi * "liên tục" *? Thử 'onmouseover'. – VisioN

+1

Khi di chuyển chuột, tôi muốn cập nhật vị trí liên tục, nhưng tôi muốn chuột được nhấp, không lơ lửng trên phần tử .. – maxhud

Trả lời

15

Dù sao, tôi muốn đề nghị sử dụng mousemove kiện với kiểm tra nếu which sở hữu sự kiện = 1 (tức là nút chuột trái ép):

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

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

+3

'e.which == 1' là thiên tài thuần túy. Tại sao tôi không nghĩ về điều này! – Bojangles

5

Here là một JSFiddle cho bạn. Bạn cần lưu trữ trạng thái của nút chuột trong một biến.

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); 
     } 
    }); 
});​ 

Ở đây, tôi đang lưu trữ các nút chuột của nhà nước lên hoặc xuống trong document sử dụng $(document).data(). Tôi có thể đã sử dụng một biến toàn cầu, nhưng lưu trữ nó theo cách này làm cho mã sạch hơn một chút.

Trong chức năng $.mousemove(), chỉ thực hiện những gì bạn muốn nếu con chuột bị tắt. Trong đoạn mã trên, tôi chỉ đơn giản là in vị trí của con chuột.

+0

Rất tuyệt! Trong IE, câu trả lời được chấp nhận thay đổi các giá trị onmouseover mà không có sự kiện mousedown. Điều này làm việc tốt trong mọi trình duyệt mà tôi đã thử! Cảm ơn! – pmrotule

Các vấn đề liên quan