2011-07-25 35 views
1

私は、このスクリプトを使用して、ホバーオーバーしたときにアイコンをフェードインします。Jqueryがホバーのフェードイン/アウトの問題 - 点滅を止めてください!

私も、トップの画像がフェードイン終了すると前の画像を非表示にする。

私はに実行しています問題は、あなたがそれの上に置くと、それはフェードの前に点滅しているようだということです。私は停止するために点滅が必要です!

以下は私の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です。 Idは.nextをフェードインして、hover-initを隠すのが好きです。それからフェードアウトの反対側に。 あなたが提案した方法はうまくいきますが、hover-initを隠すわけではありません。もう一方の上で.nextを消してしまいますが、あまりうまく見えません=/ –

+0

私の答えは正しいですか? – Cystack

答えて

0

問題が1つのDIVから別のものホバースイッチであることを行います。
だから、どんな種類の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

BrockはJqueryで先進的ではないので、私の混乱を許してください。私はあなたのコードを取り出し、それを自分のhtmlに適用しようとしましたが、何もしていないように見えます...なぜこれが起こっているのかもしれませんか? –

+0

あなたのコードは質問のコードとフィドルのコードとどのように違いますか? (このフィドルは、アクションを示すマイナーなCSS調整を除いて、質問と同じです。)この答えは、質問に記載されているように、ページに直接ドロップする必要があります。実際のページにリンクできますか? –

+0

あなたのコードが動くように修正できましたが、今は新しい問題にぶつかり、このコメントの最後にあるリンクを見て、 "再開"リンクにカーソルを合わせます。アイコンとテキストの両方を一緒にフェードインとフェードインする必要があります。コードを使用して、別々に扱われるようです。名前の上にホバーしてもスムーズではないようです(リンク先はこちら)。 –

1

fadeInを終了した後にfadeInを終了したいのですか?今私はあなたが最初のdivをフェードアウトしたい、なぜ私も知らない達成したい効果を見ること

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

EDIT:その後フェードイン機能のコールバックします。

http://jsfiddle.net/ARyjq/3/タイトルがポップアップするよう

+0

だからfadeOutは失敗しますか? '$(" .hover-init "、this).fadeOut()' – Cystack

+0

は、fadeOutに失敗したときにエラーを表示しますか? – Cystack

+0

あなたの方法では、エラーが発生せず、一方の画像が他方の画像の上に消えてしまいます。私のポストにある方法では、画像が隠れてしまって消えてしまって瞬きを起こすようです。私は1つの画像をフェードインする方法を探していて、他の方法を隠す方法はありません。どちらの方法でもエラーはありません –

関連する問題