2014-01-26 2 views
0

특정 기능에 몇 가지 키를 바인딩했습니다. 응용 프로그램에서 이러한 바인딩을 일시적으로 비활성화 한 다음이 임시 상태를 종료 할 때 다시 활성화해야한다는 점이 있습니다. 나는 열쇠를 묶고, 임시 상태를 입력하고, 열쇠를 언 바인드하고, 물건을하고, 하나의 열쇠를 리바 인딩하고, 그 열쇠에 대한 keyup 이벤트를 처리 할 수 ​​있지만, 원래의 열쇠를 리 바인딩하는 것은 작동하지 않습니다. 키 업 함수에서 키를 바인딩 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.키 업 기능에서 키를 바인딩 할 수 있습니까?

function bindKeys() { 
    $(document).keyup(function() { 
     if (event.which == 27) { 
      //stuff 
     } 

     if (event.which == 32) { 
      //stuff 
     } 

     if (event.which == 37) { 
      //stuff 
     } 
    }); 
} 

function temporaryUnbind() { 
    $(document).keyup().unbind(); 
     //stuff 
    $(document).keyup(function() { 
     if (event.which == 27) { 
      //stuff 
      bindKeys(); 
     } 
    }); 
} 
+0

는'CSTE 연구진()'와'.OFF을()'보십시오. –

+0

'function'을'.keyup()'이벤트와'bind '하고'bindKeys' 밖의 다른 함수로 감싼다면 어떨까요? –

답변

3

그것은 다시 on, off 다음 on를 사용하여이 작업을 수행 할 전적으로 가능하다.

on을 사용하고 on 처리기에서 처리할지 여부를 알려주는 플래그를 코드에 간단하게 사용하는 것이 더 간단 할 수 있습니다.

function handleKeyUp() { 
    // Handle your keys 
} 

// When you should start handling the keys 
$("some selector").on("keyup.myhandler", handleKeyUp); 

// When you should temporarily stop handling the keys 
$("some selector").off("keyup.myhandler"); 

// When you should start again (same as the original start) 
$("some selector").on("keyup.myhandler", handleKeyUp); 

플래그를 사용 : 다음 on 다시 on, off를 사용

var flag = true; 
$("some selector").on("keyup.myhandler", function() { 
    if (flag) { 
     // Handle your keys... 
    } 
}); 

// When you should temporarily stop handling the keys 
flag = false; 

// When you should start again (same as the original start) 
flag = true 
관련 문제