2014-07-07 2 views
1

img을 올리면 오버레이가 나타납니다. 괜찮아,하지만 계속 반짝 거든. 나는 여기서 둘러 보았고, 사람들은 똑같은 문제를 가진 것처럼 보인다. 그러나 해결책은 가치가 하락한 .toggle()을 포함합니다.jQuery 오버레이 호버 깜박임 문제

$(".box img").mouseenter(function(){ 
     $(this).next(".overlay").fadeIn(300); 
    }).mouseleave(function(){ 
     $(this).next(".overlay").fadeOut(300); 
}); 

여기는 Fiddle입니다.

답변

3

.overlay div가 페이드 인하면 마우스 커서와 기본 img 요소 사이에 들어가서 .mouseleave 기능을 트리거하기 때문입니다. 이

이 문제를 해결하는 방법은 여러 가지가있을 수 있지만 여기에 하나 :

.overlay 클래스에 opacity: 0를 추가합니다. 그런 다음 JS에서 이것을 사용

$(".box .overlay").mouseenter(function(){ 
    $(this).animate({opacity: 1}, 300) 
}).mouseleave(function(){ 
    $(this).animate({opacity: 0}, 300) 
}); 

그리고 (업데이트)를 fiddle link합니다.

+0

유효한 jQuery입니까? '$ ("this img")'자식 선택자를 사용할 때 어떻게'this'를 사용합니까? – Matthew

+1

@Matthew "next"는 자식 선택자가 아닙니다. 그들의 문서 (http://api.jquery.com/next/)에서도, 그들은'button' 엘리먼트에 다음 함수를 사용합니다.'img'처럼 아마 아이들을 갖지 않을 것입니다. –

+1

@Matthew 나는 그것을 알아 차렸다. 완전히 만족스러운 솔루션으로 업데이트되었습니다. 본질적으로,'opacity : 0'을 설정함으로써 보이지 않는'.overlay' div에서'mouseover' 이벤트를 트리거 할 수 있습니다. –