2012-11-14 2 views
0

나는 이것을 수행하는 방법을 고민하고 있습니다. 일부 jQuery UI 탭 안에 jqGrid 요소가 있습니다. 그리드가 너비 100 %를 채우는 지 확인하려면 간단한 window.resize 이벤트를 작성했습니다.jQuery.fadeIn()이 시작되었지만 꼭 마칠 필요가 없을 때까지 기다리십시오.

사용자가 단추를 클릭하면 jqGrids를 지우고 다시로드 한 다음 탭을 다시 페이드하면 여기에서 모두 작동하는 것을 볼 수 있습니다 : '다시로드'버튼을 클릭하여 작동하는지 확인하십시오).

그러나 눈금이 보이기 시작하면 바로 채우기 위해 표 크기를 조정하고 싶습니다. 탭에서 $(..).fadeIn()을 호출 한 직후에 $(window).resize()으로 전화를 걸면 작동하지 않습니다. 애니메이션이 아직 시작되지 않았고 그리드가 보이지 않았기 때문에 추측하고 있습니다.

페이드 효과가 시작된 직후에 window.resize을 트리거 할 여지가 있습니까?

(나는 그것을 도울 수 있다면이 끝날 때까지 기다릴 필요하지 않습니다.)

답변

1

위의 내용은 정상적으로 작동합니다. loadGrids() 함수 :

$('#container').show().css('visible', false);

아이디어 컨테이너가 보이지 않게하기 위해 존재하지만,이에 대한

jsFiddle에서 페이딩 전에 정상 레이아웃 공간을 사용하여 : http://jsfiddle.net/qvY9s/9/

+0

불행하게도 이것은 정상적으로 작동하지만 실제로 fadeIn 효과를 누전시킵니다. 당신은 fadeIn 지연을 증가시킴으로써 이것을 확인할 수 있습니다 - 아무런 효과가 없습니다. – FixMaker

+0

jsFiddle에서 일을 처리 한 순서를 수정하여 여기에서 살펴볼 수 있습니다. 기본적으로 나는 그것을 visible : false로 설정하고, 레이아웃을 업데이트하고, 숨긴 다음 페이드 인하는 작업을한다. 여기를 보아라 : http://jsfiddle.net/qvY9s/12/ –

+0

고마워. 그러나,'.css ('visible', false)'는 실제로 필요하지 않다고 생각합니다 (jsFiddle에서 제거하면 효과가 변경되지 않습니다). 조사한 결과 실제로 유효한 CSS인지 확실하지 않습니다. '.css ('visibility ','hidden ')'문서화되어 있지만'visible '속성에 대한 언급을 찾을 수 없습니다. – FixMaker

0

당신이하면 onMouseDown 및 onMouseUp에 이벤트를 시도? 하면 onMouseDown -> 크기를 조정 onMouseUp에 -> fadeIn

1

당신은 단지 그것을하기 전에 임의의 시간을 지연시킬 수있다 :

setTimeout(function(){$(window).resize()},100); 

업데이트 바이올린 : http://jsfiddle.net/qvY9s/8/

2

당신은 그냥 직접 호출 시간 제한을 설정할 수 있습니다 크기 조정 기능 :

$('#container').fadeIn(2000); 
setTimeout(custJqGResize,10); 
+0

이 말이되지만, 매번 일하는 것이 보장됩니까? 아마 경계선에있는 건 알지만,'fadeIn()'효과가 10ms 후에 시작되지 않으면 어떻게 될까요? 어쩌면 나는 현학적인데 어쩌면 항상 정확히 예상대로 작동 할 수 있는지 확인하지 않으면 타이머를 사용하여 효과를 동기화하는 것에 조심 스럽습니다. – FixMaker

관련 문제