2009-08-30 2 views
1

버튼을 클릭하면 my-image 클래스의 첫 번째 이미지에 일부 jQuery (fadeOut)를 적용하고 싶습니다. 내가 다시 그 버튼을 클릭 jQuery를 사용하여 특정 클래스의 대상 이미지를 찾으십니까?

, 나는 클래스 내 이미지와 이미지의 마크 업에서 다음 발생에 같은 일을하고 싶다.

이미지는 모두 마크 업 전체의 여러 위치에 나타나며 반드시 형제가 아니어도됩니다.

도움 주셔서 감사합니다.

답변

7

테스트되지 않았지만 표시첫 번째 가짜 선택자를 활용할 수 있습니다.

$('#mybutton').click(function(){ 
    $('.my-image:visible:first').fadeOut(); 
} 

함수는 현재 페이딩이 일치하지 않도록하기 위해 애니메이션 하지을 사용하여 애니메이션을 한 경우 :

$('#mybutton').click(function(){ 
    $('.my-image:visible:not(:animated):first').fadeOut(); 
}) 

필터 방법에 대한 우리의 이해를 수정하려면이 , 나는 단지 긴 손도 시험했다.

$('#mybutton').click(function(){ 
    $('.my-image') 
    .filter(':visible') 
    .not(':animated') 
    .filter(':first') 
    .fadeOut(); 
}) 

이 신속하게 여러 단계를 주석으로 개발 과정에서 특히 유용합니다 :

$('#mybutton').click(function(){ 
    $('.my-image') 
    .filter(':visible') 
// .not(':animated') 
    .filter(':first') 
    .fadeOut(); 
}) 
+0

. 그리고 질문에 감사드립니다. 이전에 결코 깊이 생각할 수 없었던 psudeos를 중첩하려고했습니다. –

+0

+1 큰 완전 답변. –

1

당신은 두 개의 클래스를 가질 수 있습니다. 하나는 이미 사라져 버렸고 다른 하나는 그렇지 않은 사람들을위한 것입니다. 마찬가지로 :

<img src="" alt="" class="not_faded" /> 

와 jQuery로 지금

<img src="" alt="" class="faded" /> 

는 다음을 수행 할 수 있습니다

$('#mybutton').click (function(){ 
    $('.not_faded:first').fadeOut(); // your fade out effect 
    $('.not_faded:first').attr ('class', 'faded'); 
}); 

이 코드는 not_faded 클래스에 속하는 및 페이드 아웃 이펙트를 만드는 첫 번째 이미지를 가져옵니다 . 그런 다음 이미지의 클래스를 '페이드'로 변경합니다. 그래서 다음에 not_faded 클래스의 첫 번째 이미지가 두 번째 이미지가됩니다.

편집 : Matt의 솔루션을 확인하십시오.보다 세련되고 jQuery를 최대한 활용합니다.

+0

+1 다른 클래스가 이미 이미지에 적용된 경우 attr() 대신 addClass() 및 removeClass()를 사용합니다. –

+0

좋아요,하지만 일단 모든 이미지를 순환 시키면 코드는 더 이상 아무것도하지 않으므로 "변색"으로 설정되어 더 이상 "not_faded"요소가 없기 때문입니다. 저는 이것이 당신과 Matt의 제안 모두에 해당 할 것이라고 생각합니다. 그 문제를 해결하기위한 아이디어가 있습니까? 아마 코다 슬라이더 쇼케이스 중 하나임을 언급해야합니다. 슬라이딩 작업이 있지만 현재보고있는 이미지에 조금 더 애니메이션을 추가하고 싶습니다. –

관련 문제