2012-10-25 2 views
1

나는 좋은 방법으로 다음을하는 방법을 알아낼 수없는 것 같습니다.jQuery simultaniously 일을하는 방법

이미지가 희미 해집니다. 이미지 원본을 변경하십시오. 그런 다음 다시 페이드하십시오.

하지만 문제는 fadeOut과 fadeIn이 동시에 있어야합니다. 물론 내가 지금하고있는 방식 (몇 줄 아래로 읽음)은 매우 주목할만한 fadeOut 동안 소스를 바꿀 것입니다.

$('#lightboxImage').fadeOut('slow'); 
$('#lightboxImage').attr('src', 'an imagesource'); 
$('#lightboxImage').fadeIn('fast'); 

나는 이것을 단지 실행합니다. 그것은 fadeOut 전에 이미지를 변경합니다.

내가 두 번째 두 번째 줄을 fadeOut 콜백 함수에 넣었을 때. 새 이미지가 희미 해지기 전에 작은 흰색 화면이 나타납니다.

누군가가이 문제를 해결할 수 있기를 바랍니다. :)

답변

5

fadeOut 콜백 기능을 사용해야합니다. 아래

$('#lightboxImage').fadeOut('slow', function() { 
    // Callback function that will be called after fadeOut 
    $('#lightboxImage').attr('src', 'an imagesource').fadeIn('fast'); 
}); 

jQuery를 문서에서, 아래 참조

.fadeOut([duration] [, easing] [, callback])

  • durationA 문자열이나 애니메이션이 실행 시간을 결정하는 숫자입니다.
  • easingA 변환에 사용할 여유 함수를 나타내는 문자열.
  • callback 애니메이션이 완료되면 호출 할 수있는 함수.
+0

당신은뿐만 아니라 SRC를 설정하기 전에 FadeIn 부분으로 이미지에에 onLoad - 콜백을 설정할 수 있습니다. –

+0

@PerSalbark jQuery는 개발자 측에서 위키 백과 사전없이 캐싱 된 이미지의로드를 제대로 감지하지 못하기 때문에 자체적으로 문제가 발생합니다. 문서로 이미지를 미리로드하는 것이 좋습니다. – Blazemonger

+0

그렇지 않습니까? 나는 그것으로 어떤 문제도 가지지 않았다. 있는 사람과 연결할 수 있습니까? –

3

콜백 기능을 사용하십시오.

wikipedia page은 콜백 기능을 잘 설명합니다. 컴퓨터 프로그래밍

는 콜백은 다른 코드 인수로 전달하고, 실행 가능한 코드, 또는 실행 코드 부분에 대한 참조이다. 이렇게하면 하위 레벨 소프트웨어 계층이 상위 계층에 정의 된 서브 루틴 (또는 함수)을 호출 할 수 있습니다.

$('#lightboxImage').fadeOut('slow', function() { 
    $(this).attr('src', 'an imagesource').fadeIn('fast'); 
    }); 
}); 

사용 $ (이) 또 다시 발견하지 않는 : 그들이 트릭을 할 것입니다 큐

+0

비록 내가가는 길은 어딘가에 있지만 화면이 비어있는 작은 순간이 여전히 있습니다. 내가해야할 일은이 페이지와 거의 같습니다 : http://fabriq.nl/moon-thinsulate-jas-navy-pf-12106.html 메인 이미지를 클릭하면 라이트 박스가 나타납니다 . 그런 다음 다음 버튼을 누릅니다. 여기에서 볼 수있는 전환은 제가 찾고있는 것입니다. – Weszzz7

+0

fadeout time을'slow'에서'fast'로 변경하고 찾고자하는 것이 있는지 확인하십시오. :) – abhshkdz

0

.

편집 : attr 함수에 콜백이 없으므로 내 대답이 업데이트되었습니다. 고마워.

+1

여기에 무슨 일이 일어 났는지 아는 것은 좋은 일입니다. 그 이유는 내 대답이 무효화 되었기 때문입니다. 그것은 사람들을 돕는다. –

+0

다른 답변을 복사하고'$ ('# lightboxImage')'를 $ (this)로 변경 했으므로 아마 downvoted가 된 것 같습니다. 실제로 다른 답변에 대한 코멘트가 아니어야하며, 다른 답변과 다른 내용을 제공하지는 않습니다. 그것의 단지 낭비 된 공간. –

+0

@ThomasClayson 그는 정말로 어떤 대답도 복사하지는 않았지만 그는 허용되지 않는'attr'에 대한 콜백을 잘못 정의하려고 시도했습니다. 그래서 @pulkit, 나는 당신이 틀린 대답을 위해 downvoted했다고 생각합니다,'attr'는 콜백을 가지고 있지 않습니다. –

1

사람들이 제공하는 답변이 원하는 것인지 잘 모르겠습니다.

첫 번째 이미지가 두 번째 이미지로 "흐리게"보이길 원합니다.

이 경우 두 이미지가 필요합니다.

뒤의 코드는 display: none이어야합니다.

$('img#image1').fadeOut(); 
$('img#image2').fadeIn(); 

을 그리고 첫 번째 이미지는 두 번째로 퇴색한다 :

그럼 당신은 할 수 있습니다.

전경이 퇴색하기 전의 배경 이미지를 포착하도록 두 이미지를 절대적으로 배치해야합니다.

http://jsfiddle.net/vre4M/

이 또한 돌아가서 전달할 수 있습니다 : http://jsfiddle.net/vre4M/1/

+0

아, 그래, 이건 내가해야 할 일이다. 문제는 코드가 꽤 복잡하다는 것입니다. (저는 jQuery와 magento를 처음 접했습니다.) 예를 들어 주셔서 감사합니다. 나는 이걸 얼마나 멀리 얻을 수 있는지 보여줄 것입니다. :) – Weszzz7

관련 문제