2009-09-17 4 views
10

커서가 특정 요소 위로 이동하는 동안 Shift 키가 눌러져 있는지 감지하려고합니다. 함수는 실행되지만 이후에만 이 표시됩니다. 다른 요소를 먼저 클릭합니다. 이 문제를 해결할 수있는 방법이 있습니까? 나는 문서와 요소 모두에 초점을 맞추려고 시도했지만 의사 클릭 기능을 만들려고했지만 지금까지 아무 것도 효과가 없었다.jQuery로 Shift + mouseover

예를 들어, 다음 코드는 내가 페이지에 다른 요소를 클릭 한 후에 만 ​​작동합니다

$("#selector").mouseover(function(e){ 
    if(e.shiftKey) { 
     console.log("the shift key is pressed"); 
    } 
}); 

감사를 사전에 정보를 위해.

+0

호버 설정시 조치가 어떻게 실행될 수 있습니까? (게시 된 부분 옆에있는) 코드에는 몇 가지 다른 문제가 있습니다. – dusoft

+0

@dusoft : 다른 javascript/jQuery (jQuery 소스 제외)와 같은 결과를 가진 페이지의 단일 요소로 완전히 새로운 문서를 테스트했습니다. 생각해 줘서 고마워. –

답변

10

확인이 다음의 keyup에 다음

$(document).keypress(function (e) { 

    if(e.shiftKey) { 
    pressed = true; // pressed is a global varialbe. Be carefull of the scope 
    } 

} 

: 다음

$(document).keyup(function(event){ 
    pressed = false; 
}); 

는 수행

$("#selector").mouseover(function(e){ 
    if(pressed) { 
     console.log("the shift key is pressed"); 
    } 
}); 

또는 다른 방법으로 주위 :

$("#selector").mouseover(function(e){ 
    isover = true; 
}); 

및 시프트 키가 가압 해제 될 때 변수에 저장할 필요가 없다
$(document).keypress(function (e) { 

     if(e.shiftKey) { 
     alert("do something") 
     } 

    } 
+0

나는 당신이하려고하는 것의 100 %를 이해했는지 모르겠지만 두 사람 중 한 사람이 잘해야한다고 생각합니다. – marcgg

+0

@marcgg : 답변 해 주셔서 감사합니다. 나가 나가하고있는 것을 조정할 필요가있는 것이 나왔다, 그러나 이것은 나의 초기 질문에 응답했다. –

+1

너무 복잡합니다. 키스 (짧고 간결하게). Martin Schaer의 답변을 확인하십시오! :-) – JMW

1

이렇게 코드를 시도한 결과 완벽하게 작동했습니다. 그래도 마우스 오버 시프트가 필요합니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script> 
    loadHandler = function(){ 
     $("#selector").mouseover(function(e){ 
      if(e.shiftKey) { 
       alert("the shift key is pressed"); 
      } 
     }); 
    } 
</script> 
</head> 
<body onload="loadHandler();"> 
<div style="border:1px solid black" id="selector"> 

    <br/> 
    <br/> 

    This is a div. 

    <br/> 
    <br/> 

<div> 
</body> 
</html> 

어떤 유형의 요소에 적용됩니까? 키 누르기 이벤트에

+0

@ 마크 : 그것은 img에 적용되고 있었지만, 내가하고있는 것을 조정할 필요가있었습니다. 귀하의 회신에 감사드립니다 - 그것은 도움이되었습니다. –

8

. 다음과 같이하려고하는 목표를 달성 할 수 있습니다.

$('#selector').mouseover(
    function(e){ 
     if (e.shiftKey) 
     { 
      console.log("the shift key is pressed"); 
     } 
    } 
); 
+1

이것은 올바른 대답이어야합니다 :-) .click()을 .mouseover()로 대체하십시오. – JMW