2011-02-18 3 views
0

MyDiv라는 div가 있습니다. 사용자가 클릭 할 때 2 개의 함수를 차례로 호출하는 방법은 무엇입니까? jQuery : 두 이벤트 바인딩

$('#MyDiv').click(function() { 
    action1() // wait until it finishes and call action2 
}); 

action1

내 마스터 페이지에로드 action2이 이름 action2 실제로 것이기 때문에 내가 action1에서 action2를 호출 할 수 없음을 의미 모든 페이지에서 다르다 작은 인라인 스크립트 함수 있어요 스크립트에서 함수입니다 모든 페이지마다 다릅니다.

답변

2

, 당신은 다만 수 : 그들은 asynchonous 경우

$('#MyDiv').click(function() { action1(); action2() }); 

것은, 당신은 몇 가지 작업을 수행 할 수 있습니다. 콜백 :

action1 = function(callback) { 
    //stuff 
    callback(); 
} 
$('#MyDiv').click(function() { action1(this) }); 

전달할 때 action2를 호출하지 않습니다. 그냥 함수를 전달하십시오.

또한 조치 1에서 이벤트를 발생하고 (여기에 메모리에서 작업)이 이벤트를 수신하는 조치 2 말할 수

:

내 경우
action1 = function(element) { 
    //stuff 
    $(element).trigger('action1_finished') 
} 
$('#MyDiv').click(function() { action1(this) }).bind('action1_finished', action2) 
+0

, 나는 조치 1 완료된 후 조치 2 실행하려면; 이것은 동기식 또는 비동기식이라고 불리우 시나요? 옵션 1은 두 기능을 동시에 실행합니까? – frenchie

+0

+1 맞춤 이벤트 연결 용입니다. @frenchie,'action1'에는 애니메이션 (또는 비동기 무언가 또는 다른 것)이 있다고 가정합니까? action1이 완료되면 이벤트를 트리거해야하지만, JS와 같은 이벤트 지향 언어로 이벤트를 수행하는 가장 좋은 방법입니다. – zzzzBov

+0

예, action1은 애니메이션입니다. – frenchie

1

자바 스크립트 기능은 동기식입니다.
action1 뒤에 action2으로 전화하면 action1 완료 후에 실행됩니다.

action1이 비동기 (AJAX 또는 애니메이션 인 경우) 인 경우 콜백 매개 변수를 사용하도록 설정해야합니다. 조치 1 및 조치 2가 asynchonous하지 않은 경우

관련 문제