2011-10-12 2 views
5

같은 개체 (예 : 텍스트 상자)에 다른 바운드 이벤트가 먼저 시작되도록 허용하는 방법이 있습니까?다른 바운드 요소 이벤트가 먼저 트리거되도록 허용 하시겠습니까?

두 번째 이벤트가 동일한 텍스트 상자에 바인딩되었습니다. 두 가지 키 이벤트. 내 경우에는 플러그인 자체 이벤트를 바인딩하지만, 코드가 작성된 방식, 내 바인딩 먼저 가져옵니다. 나는 먼저 내 발사를 원하지 않는다.

$("#firstname").keyup(function() { 
    // ...is there anyway to allow the other keyup event to fire first, from here? 
    // do my work here... 
} 

$("#firstname").keyup(function() { 
    // the plugin work. 
} 

키 업을 사용해야하는 경우 이미 키 다운 이벤트가 있습니다.

답변

1

실제로 이벤트에 대한 하나의 키 바인딩 만 가능하도록 코드를 다시 작성해야하지만 가능하지 않은 경우 세마포어로 더러워서 바인딩에서 기능을 분리하여 바인딩에서 호출 할 수 있습니다. ..

var semaphore = 0; // on init 

$("#firstname").keyup(function() { // this one should run first 
semaphore++; 

if (semaphore === 0) { 
    first_action(); 
} 
} 

$("#firstname").keyup(function() { // this one should run second 
if (semaphore > 1) { // you know the first event fired 
    second_action(); 
} 
else if (semaphore < 1) { 
    first_action(); 
    second_action(); 
    semaphore++; 
} 
} 
관련 문제