2012-07-01 4 views
7

버튼을 누르고있는 동안 마우스 위치를 계속 얻을 수 있습니까?마우스가 다운되는 동안 마우스 위치를 얻으시겠습니까?

나는 내가 할 수있는 알고

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

나는 당신이하면 onMouseDown 이벤트를 사용할 수 있습니다 알고 있지만, 버튼을 계속 누르고있는 동안 어떻게 지속적으로 위치를 얻을 것?

이상하게도 내가 찾은 곳이 어디에도 없습니다.

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

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

+1

* "연속"* 무엇을 의미합니까? 'onmouseover'를 시도하십시오. – VisioN

+1

마우스가 움직이면서 위치를 지속적으로 업데이트하려고합니다. 그러나 마우스를 클릭하여 요소 위로 가져 가려고하지 마십시오. – maxhud

답변

15

어쨌든, 나는 검사와 mousemove 이벤트를 사용하는 것이 좋습니다 것 당신. 마우스 단추의 상태를 변수에 저장해야합니다.

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

, 나는 마우스 버튼의 위 또는 $(document).data()를 사용하여 document에서 다운 상태를 저장하고있다. 전역 변수를 사용할 수는 있지만이 방법으로 저장하면 코드가 좀 더 깨끗해집니다.

$.mousemove() 기능에서 마우스를 사용하지 않으면 원하는 기능 만 수행하십시오. 위의 코드에서 마우스 위치를 간단히 인쇄하고 있습니다.

+3

e.which == 1은 순수한 천재입니다. 왜 나는 이것을 생각하지 않았는가! – Bojangles

5

Here를위한 JSFiddle입니다 which 이벤트 속성이 1 (누르면 즉 마우스 왼쪽 버튼)을 동일한 경우

+0

니스! IE에서, 허용 된 응답은 mousedown 이벤트없이 onmouseover 값을 변경합니다. 이 하나는 내가 시도한 모든 브라우저에서 잘 작동한다! 감사! – pmrotule

관련 문제