2011-10-08 2 views
11

은 가능한 같은 것을 할 수 있나요 : mousedown과 if 문을 확인하십시오.

if ($(this).mousedown() == true) { 

나는 그 일 것이라고 생각하지만 그렇지 않습니다.

추가 세부 정보 : 그렇지 않으면 나는 사람이 자신의 마우스가 사업부를 유지하는 동안, 이렇게 마우스 버튼을 들고, 그래서 만약 마우스가 특정 DIV을 떠날 때 마우스 버튼이 눌러져 있는지 확인하기 위해 노력하고있어, 그렇게.

+0

마우스 왼쪽 버튼 항목 아래의 경우 알고 싶은, 또는 수행 그들은 단지 페이지의 아무 곳을 누를 경우? – Ben

+0

함수/메소드를 실행 한 이벤트를 확인하려고합니까? –

+0

업데이트 된 질문입니다. 예, div의 왼쪽 버튼을 누릅니다. –

답변

19

가장 쉬운 방법은 documentmousedownmouseup 이벤트 리스너를 결합하고 그에 따라 전역 변수를 업데이트하는 것입니다. 요소의 mouseout 이벤트에서 해당 변수의 상태를 확인하고 적절하게 동작 할 수 있습니다. (참고 : 이것은 마우스가 div 이상인 동안 마우스를 눌렀는지 여부에 상관하지 않는다는 것을 전제로합니다. 그 주위에서 질문을 명확히해야합니다).

var down = false; 
$(document).mousedown(function() { 
    down = true; 
}).mouseup(function() { 
    down = false; 
}); 
$("#example").mouseout(function() { 
    if(down) { 
     console.log("down"); 
    } 
    else { 
     console.log("up"); 
    } 
}); 

다음은 위의 working example입니다.

+0

'$ .data()'를 사용하여'down' 변수를'# example' 요소에 첨부하는 것이 문제가됩니까? –

+0

아니요, 전혀 문제가되지 않습니다. 좋은 생각, 전역 변수의 사용을 피하기 위해. –

+0

예를 들어,이 요소가 둘 이상의 요소에 있어야한다고 생각합니다. 내가 생각하고 있던 유일한 것은 속도였다. –

1

http://jsfiddle.net/5HrWF/

이런 식으로 뭔가?

코드 : 내가 생각할 수있는

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
    <p>Press mouse and release here.</p> 

<script> 
    $("p").mouseup(function(){ 
     $(this).append('<span style="color:#F00;">Mouse up.</span>'); 
    }).mousedown(function(){ 
     $(this).append('<span style="color:#00F;">Mouse down.</span>'); 
    }); 

</script> 

</body> 
</html> 
0

좋아, 그럼 내가 당신에게 줄 수있는 가장 좋은 방법은 이것이다 : http://jsfiddle.net/qK8rr/2/

+0

이것은 부러진 레코드처럼 들리지만 답변에 실제 코드를 올리십시오 (이것은 SO의 모범 사례로 간주됩니다). ':)' –

5

원래의 질문에 대답, 그래이 가능합니다. mousedown 이벤트가 요소 위에 발생하면 요소는 활성 상태가되고 pseudo selector : active에 의해 선택됩니다. jQuery에서 아무 것도 선택하지 않으면 빈 배열이 반환됩니다.이 배열을 .length 배열 속성과 함께 사용하여 이점으로 사용할 수 있으며 활성 의사 선택기를 검사하여 특정 요소 위에 마우스가 있는지 또는 없는지 확인합니다 그래서 : 마우스 가 주어진 시점에서 아래로 특정 요소 끝난 경우

if ($('#id:active').length) { 
    //do something 
} 

선택하면 다른 이벤트 내가 추가 할 수 있습니다이 질문의 제목으로 이동하지 않고 변경해야합니다. 구글이 나를 데려왔다.이 대답은 필연적으로 뒤따를 사람들을위한 것이다.

0

이것을 확인해보십시오. http://jsfiddle.net/b1Lzo60n/

마우스가 1 초 후에 마우스가 계속 내려 갔는지 확인하는 타이머가 시작됩니다.

<button id="button">Press me</button> 
<div id="log"></div> 

코드 :

var mousedown = false; 
var mousedown_timer = ''; 
$('#button').mousedown(function(e) { 
    mousedown = true; 
    $('#log').text('mousedown...'); 
    mousedown_timer = setTimeout(function() { 
     if(mousedown) { 
      $('#log').text('1 second'); 
     } 
    }, 1000); 
}).mouseup(function(e) { 
    mousedown = false; 
    clearTimeout(mousedown_timer); 
    $('#log').text('aborted'); 
});