2012-10-01 3 views
1

몇 가지 카테고리 링크가있는 포트폴리오 엄지를 필터링하고 싶습니다. Quicksand는 너무 버그가 있으며, 나는 내 자신의 코드를 작성하려고합니다. 나는 jQuery를 처음 사용하기 때문에 문제가 생길 수도 있고 과도한 코드 일 수도 있다는 것을 알았다. :)jQuery fadeOut and fadeIn issues

내가 나서서 문제를 보여주는 jsFiddle을 만들어 :

http://jsfiddle.net/zHWgG/1/

가 깜박 방법보기를? 나를 완전히, 보이는 모든 페이드 필터를 클릭 한 다음에만 해당하는 엄지 손가락에 페이드에 원하는 효과는 것 그것은 노력하고 유효한 jQuery를하지만, 내가 어떻게 할 수 있어요 :.

  1. 깜박 거림을 없애

  2. 가 날씬하고 코드를 생성/(적은 바이트)

감사를 단순화 효과!

+0

나는 그 데모에서 아무런 깜박 거림을 볼 수 없다. – elclanrs

+0

내가 보는 것은 이중 애니메이션이다. 확실하지는 않다. 클릭 한 범주의 페이드 아웃 및 페이딩이 부드럽게 보입니까? 모두에게 똑같이 보일 것입니다, 잘하면 ... –

답변

2

애니메이션 종료 콜백을 사용하십시오.

$('.item').fadeOut(500, function() { 
    $('.item').fadeIn(500); 
}); 

편집 : 보이지 않는 .portfolio - itens이 fadding 아웃 때문에 그들이 효과 활성화에 가시가 –을 깜박이가 발생합니다. 이것을 사용하십시오 :

$('.portfolio-item:visible').fadeOut(500, function() { 
    $('.item').fadeIn(500); 
}); 

의사 선택기 :visible는 원하는 요소를 페이드 아웃을 활성화합니다.

+0

그게 내가 이미하고있는 것이 아닌가요? –

+0

@ JustinW 첫 번째 앵커가 아니라 내 실수 때문입니다. 실례합니다. –

+0

정말 유용합니다. 고마워요. ': visible' 의사 - 선택자를 사용할 때 발생하는 호환성 문제는 무엇입니까? 그렇다면이 작업을 수행하는 또 다른 방법은 무엇입니까? 또한 필터를 클릭 한 다음 "모두"를 클릭하면 여전히 깜박입니다. 거기서 무엇을 바꿔야합니까? –

1

깜박임을 중지하려면, 당신은 당신의 코드에 .stop()를 추가해야합니다 ->http://api.jquery.com/stop/

http://jsfiddle.net/rrikesh/dS5zV/

$('#all').click(function() { 
     //fade out entire set (transition looks better) 
     $('.portfolio-item').stop(true,true).fadeOut(500); 
      //fadeIn all thumbs 
      $('.portfolio-item').fadeIn(500); 
     }); 
}); 
+0

고마워! 나는 그것을 여기에 두드렸다 : http://jsfiddle.net/HbfHa/ –

+0

다시 한번 감사드립니다. 두 답은 모두 매우 도움이되었습니다. 두 분이 모두 대답했는지 확인하고 싶습니다만, 태소반이 먼저 대답했습니다. –

+0

걱정하지 않아도됩니다. 내 목표는 점을 수집하지, 당신을 도울 수 있었다 :) – RRikesh

1

코드 줄이 시도 :

$('.menu_item').click(function(){ 
    var callBack = (function(itemsToShow){ 
     $('.portfolio-item:visible').fadeOut(500, function() { 
      $(itemsToShow).fadeIn(500); 
     }); 
    }); 

    switch ($(this).attr('id')){ 
     case 'all': 
      callBack('.portfolio-item'); 
      break; 
     case 'web': 
      callBack('.web'); 
      break; 
     case 'graphic': 
      callBack('.graphic'); 
      break; 
     case 'logo': 
      callBack('.logo'); 
      break; 
     case 'motion': 
      callBack('.motion'); 
      break; 

    }     
}); 

당신은에서 볼 수 있듯이을 위에서 탐색 목록에 menu_item 클래스를 추가했습니다.

http://jsfiddle.net/zHWgG/18/

+0

그건 정말 슬림 것들. 여기서 일어나는 일을 더 잘 이해하기 위해 이걸 살펴볼 것입니다. 내 프로그래밍 수업이 지금 내게 돌아 오는 것 같아! 도와 줘서 고마워, 울란! –

+0

괜찮습니다! 당신은 또한 이와 같은 것을 시도 할 수 있습니다 : http://jsfiddle.net/zHWgG/23/ 유일한 제약 조건은 네비게이션 아이템과 포트폴리오 아이템의 클래스 이름에 대해 동일한 id 이름을 가져야한다는 것입니다. –

+0

그건 의미가 있습니다. . 나는 예전의 라디오 버튼을 사용하여 이와 비슷한 것을 썼기 때문에,이 예제 라인을 따라 좀 더 시각적으로 보여 주었다. 프로그래밍에 녹슨 것이므로 필요할 때가 있습니다. 다시 한 번 감사드립니다! –