당신의 최선의 선택은 실제로 이것이다 :
$('#bigmap').fadeOut(500);
이 그것을 페이드 아웃하고 자동으로 수행 할 때 그것을 숨길 것입니다.
원래 코드가 예상대로 작동하지 않는 이유를 설명하려면 jQuery 애니메이션과 자바 스크립트에 대해 약간 이해해야합니다.
jQuery 애니메이션은 애니메이션 대기열에 들어가고 타이머를 사용하여 시간이 지남에 따라 실행됩니다. .animate()
에 대한 호출은 애니메이션을 시작하기 만하면 애니메이션이 완료되기 훨씬 전에 함수가 반환됩니다. 잠시 후까지 애니메이션이 완료되지 않습니다. 따라서 .animate()
에 대한 호출이 반환되면 (애니메이션 시작 직후) 다음 체인 메소드가 실행됩니다.
체인 된 메소드 $(selector).aaa().bbbb().cccc()
은 자바 스크립트 엔진에 의해 동 기적으로 실행되므로 jQuery는 타이밍을 제어하지 않습니다.
다행히도 .animate()
메서드에 대한 완료 함수가 있으므로 애니메이션이 완료되면 코드를 실행하고 코드를 삽입하여 해당 개체를 숨길 수 있습니다.
$('#bigmap').animate({opacity:0}, 500, function() {
$(this).hide();
});
이가 숨어있는이 jQuery를 .fadeOut()
방법에 내장되어 있기 때문에 전혀이 문제에 대해 걱정이 완료되면 자동으로 개체를 숨길 다음도이없는 .fadeOut()
방법을 사용하는 것보다 더 나은 :
$('#bigmap').fadeOut(500);
감사합니다. 동기없는 작동은 내가 얻지 못한 것입니다. 일부 아이템을 페이드 인/아웃으로 바꿨지 만 디스플레이가 어떻게 배치되어 있는지에 따라 아무런 문제가 발생하지 않습니다. 그러나 큰 설명에 감사드립니다! – dex3703