2012-10-29 2 views
1

jquery와 mouse down 이벤트를 처리하는 이벤트가 새로 생겼습니다. 지금 동안 내가 찾은과 같은 것을 사용했다 :jquery mouseclick 이벤트

$("#canva").live('mousedown mousemove mouseup', function(e){ .... 

을하지만 마우스가 캔버스 요소 위에있는 경우에도이 function(e) 화재 (모두 왼쪽 버튼을 클릭하거나되지 않은 경우).

#canva 위의 좌표 변경과 마우스 버튼을 클릭 할 때마다 해고 될 이벤트를 기다리고 있습니다. 마우스 왼쪽 버튼을 놓으면이 이벤트가 종료됩니다. 이 작업을 수행하는

답변

1

한 가지 방법은 글로벌 변수를 생성하는 것, 사용자가 같은 요소를 통해 클릭 할 때 그 값을 수정할 : 이제

var mouseIsDown = false; 

$('#mycanvas').on('mousedown', function() {mouseIsDown = true}); 
$('#mycanvas').on('mouseup', function() {mouseIsDown = false}); 

당신이해야 할 모든 였다면 'mousemove'을 결합하는 것입니다 호출하려는 함수에 전달하고 왼쪽 클릭의 상태를 확인하고 필요한 경우 이스케이프하는 함수 본문에 조건을 추가하기 만하면됩니다. 사용자가 요소 내부를 클릭 한 후 해제하기 전에 요소 외부 마우스를 드래그한다면

function fireThis(e) { 
// if the user doesn't have the mouse down, then do nothing 
if (mouseIsDown === false) 
    return; 

// if the user does have the mouse down, do the following 
// enter code here 
// .... 
// .... 
} 

// bind mousemove to function 
$('#mycanvas').on('mousemove', fireThis); 

이제, 당신은 '와 mouseUp이'트리거되지 얻을 않을 것을 알 수 있습니다 및 변수 mouseIsDown은 다시 변경되지 않습니다 거짓으로.

$('#mycanvas').on('mouseout', function() {mouseIsDown = false}); 

또는 여기

$(document).on('mouseup', function() {mouseIsDown = false}); 

은 예입니다 : 그 주위를 얻으려면, 당신도 바인드는 다음과 같은 세계적으로 mouseIsDown 또는 바인드 '와 mouseUp'리셋 함수에 '로 마우스를'수 http://jsfiddle.net/pikappa/HVTWb/