2011-07-25 6 views
1

나는이 스크립트를 사용하여 위에 마우스를 가져 갔을 때 다른 아이콘 위로 페이드 아웃합니다. 상단 이미지가 페이드 완료되면Jquery가 호버 (hover) 문제에서 페이드 인/아웃 - 깜박임을 중지하십시오!

는 또한 이전의 이미지를 숨기려.

내가으로 실행하고 문제는 당신이 위로 마우스를 가져 가면 퇴색하기 전에 깜박 보인다는 것이다. 나는 멈출 필요가 깜박이다!

다음은 HTML과 jQuery 코드입니다. 나는이 코드를 다소 보편적으로 만들려고 노력했다.

.link-container { 
    position: relative; 
    cursor: pointer; 
    float: left; 
} 
.title-hover { 
    background-position: 0 -106px; 
    width: 320px; 
    height: 33px; 
    margin: -32px 0 0 56px; 
    display: none; 
    z-index: 2; 

} 
.title { 
    background-position: 0 -63px; 
    width: 320px; 
    height: 33px; 
    margin: -32px 0 0 56px; 
} 

<div class="link-container"> 
    <div class="main-tile hover-init title"></div> 
    <div class="main-tile title-hover"></div> 
</div> 

$(function() { 
    $(".link-container").hover(function() { 
     $(".hover-init", this).next().stop(true, true).fadeIn(400); 
     $(".hover-init", this).hide(); 
    }, function() { 
     $(".hover-init", this).next().stop(true, true).fadeOut(400); 
     $(".hover-init", this).show(); 
    }); 
}); 
+2

당신은 HTML, 그냥 CSS를 게시 didnt한다. –

+0

jquery가 오래된 이유는 최신 버전뿐 아니라 html입니다. 이드는 .next를 페이드 인하 고 hover-init를 숨 깁니다. 그런 다음 페이드 아웃의 반대쪽으로 이동합니다. 당신이 제안한 방법이 효과가 있지만 호버 - 초기화를 숨기지 않고 .next가 다른 것 위에 겹쳐서 보이지 않는데,보기에는 좋지 않습니다./ –

+0

내 대답에 답장하고 있습니까? – Cystack

답변

0

문제는 하나 개의 사업부에서 다른 것을 가져가 스위치입니다 않습니다.
그래서 어떤 종류의 div인지 파악하고 응답을 변경해야합니다. 당신이 요청으로 수행

코드는 다음과 같습니다

$(".link-container div.main-tile").hover (fancyRollover); 

function fancyRollover (zEvent) { 
    var jThis   = $(this); 
    var bInInitDiv  = jThis.hasClass ('hover-init'); 
    if (bInInitDiv) { 
     var initDiv  = jThis; 
     var hoverDiv = jThis.next(); 
    } 
    else { 
     var initDiv  = jThis.prev(); 
     var hoverDiv = jThis; 
    } 

    if (zEvent.type == 'mouseenter') { 
     if (bInInitDiv) { 
      hoverDiv.stop (true, true).fadeIn (400, function() { 
       initDiv.hide(); 
      }); 
     } 
     else { 
      //--- Do nothing. 
     } 
    } 
    else { //-- zEvent.type == 'mouseleave' 
     if (bInInitDiv) { 
      //--- Do nothing. 
     } 
     else { 
      hoverDiv.stop (true, true).fadeOut (400); 
      initDiv.show(); 
     } 
    } 
} 


See it in action at jsFiddle.

+0

브록 내 너무 혼란을 용서하십시오 Jquery와 함께 고급 없습니다. 나는 코드 조각을 가져 와서 내 html에 적용하려고 시도했지만 아무 것도하지 않는 것 같은데 ... 왜 이렇게 될지에 대한 제안은 무엇입니까? –

+0

코드는 질문의 코드와 바이올린의 코드와 어떻게 다른가요? (바이올린은 질문과 동일하지만 동작을 보여주는 약간의 CSS 조정을 제외하고는.)이 답변 jQuery는 질문에서 설명한대로 페이지로 바로 들어가야합니다. 실제 페이지에 연결할 수 있습니까? –

+0

코드를 수정하여 문제가 해결되었지만이 문제가 끝나면 링크를 살펴보고 "이력서"링크 위로 마우스를 가져갑니다. 아이콘과 텍스트가 모두 페이드 인 및 페이드 아웃해야하며 코드를 사용하여 별도로 처리해야합니다. 이름 위에 마우스를 올려 놓어도 부드러운 것처럼 보이지 않습니다. [여기에 링크] (http://www.norkenguitars.com/new) –

1

fadeIn을 끝내려면 fadeIn을 마친 후 시작 하시겠습니까? 그런 다음 그것을 fadeIn 함수의 콜백합니다

$(".hover-init", this).next().stop(true, true).fadeIn(400, function() { 
    $(".hover-init", this).fadeOut(); 
}); 

편집 : 지금은 당신이 처음 사업부를 페이드 아웃 할 이유를 나는 알지도 못하는 달성하고자하는 효과를 볼 수 있다는

.

http://jsfiddle.net/ARyjq/3/

는 제목이 팝업으로

+0

그래서 fadeOut이 실패합니까? '$ (".hover-init", this) .fadeOut()' – Cystack

+0

대신에'$ (this) .fadeOut()'를 시도해 보면 fadeOut에 실패 할 때 오류가 발생합니까? 귀하의 방법으로 – Cystack

+0

오류가 발생하지 않는 단지 하나의 이미지가 다른 이미지 위에 사라집니다. 방법으로 나는 내 게시물에 그것은 깜박 거리는 원인이 다음 페이드 이미지를 숨기려고하는 것 같습니다. 1 개의 심상을 fadein하는 방법을 찾는 Im 그때 저 방법을 다른 방법 저를 깜박 거리십시오. 두 가지 방법 중 아무런 오류가 없으므로 –

관련 문제