2012-04-17 4 views
2

이벤트 핸들러 내에서 토글 (표시/숨기기)에 대한 콜백 :하지만, 내가 함수 rs(1);jQuery를 -이 제대로 작동 했어

에게 전화를 걸 모든 토글의 끝에서

$('#RCH'+r).on('click',function(e){$('#RSC'+r).find('.rct,.rcp').toggle();}); 

플랜 1 : 토글에 콜백을 넣으려고했지만 모두 엉망입니다.

$('#RCH'+r).on('click',function(e){ 
    $('#RSC'+r).find('.rct,.rcp').toggle('',function(){rs(1);}); 
}); 

위 (AN each 같은) 모든 클래스의 선두로부터 rs(1)위한 함수를 호출한다. 또한 정상적으로 수행되는 작업을 취소하여 .rcp이 표시되고 .rct이 숨겨지면 정확하게 반대가 발생합니다. 그래서 Plan 1은 모든 것이 핸드 바구니에서 지옥에 빠지게 만듭니다.

플랜 2 : 을 .on 기능 (아래 참조)으로 토글 한 후에도 시도해 보았습니다.

$('#RCH'+r).on('click',function(e){$('#RSC'+r).find('.rct,.rcp').toggle();rs(1);}); 

그러나이 방법은, 토글이 완료, 그래서 rs 기능은 일을하지 않는 전에 rs(1) 발생합니다.

토글이 끝난 후 rs(1); 번을 어떻게 할 수 있습니까?

감사합니다.

+1

'toggle()'은 순식간입니다. – Matt

+0

나는 그렇게 생각했을 것이다. 그러나 그렇게 보이지는 않는다. 내가 확인해 볼께 :) [나중에] 아니, 정말 그렇게 보이지 않는다. 두 클래스의 모든 인스턴스를 순환하기 때문에 추측하고 있습니다. – Nick

+0

내 실수는 모두. 그것은 즉각적입니다. 하지만 최근 rs 함수를 하나가 아닌 두 개의 인수를 허용하도록 변경했습니다. 그래서 함수가 올바르게 호출되지 않았습니다. 천여명의 용서. 당신 말이 맞았습니다, Matt & Félix :) – Nick

답변

2

글쎄, 우선, .toggle()은 즉석이므로 실제로는 .toggle(/* some duration */)을 사용한다고 가정합니다. 이 경우 전환 애니메이션이 완료된 후 호출되는 함수 전달할 수 있습니다 : 당신 실제로 .toggle()를 사용하여을 경우

$('sel').toggle(/* duration */, function() { 
    // ... 
}); 

을하지만, 어떤 이유로하고있다 지연이 코드는 당신을 실패 이 시도 할 수 :

$('sel').toggle(0, function() { 
    // ... 
}); 
+0

나는 토글이 순간적 이길 원합니다. 콜백을 추가 할 때 .toggle ('', function() {... 토글 (0, function() {...을 실현합니다.) ... – Nick

+0

위의 사과를 참조하십시오. – Nick

0
$.when($('#RCH'+r).on('click',function(e){$('#RSC'+r).find('.rct,.rcp').toggle();})) 
    .done(function(){rs(1);}); 

이 하나를 시도, 나는이 작품 바랍니다.

+0

This 이벤트 핸들러가 연결될 때가 아니라, rs (1) 함수가 실행됩니다. rch (1)은 핸들러가 실행될 때 실행됩니다 (즉, 사용자가 RCH3을 클릭하면 (r = 3).하지만 제안 주셔서 감사합니다 :) – Nick