2011-08-10 8 views
0

アクティブなクラスがアタッチされていない限り、画像をロールオーバーすると画像が変化するメニューがあります。私の問題は、最初の画像ではなく2番目の画像でのみ画像が変化することです。これが何であるかのアイデア。IF ELSEホバーステートメントは、2回目のホバーでのみ動作します

$("#contact").hover(function() { 
    if ($("#contact").is(".active")) { 
     $("#contact img").attr("src","Images/Menu/contact_hover.png") 
    } 
    else { 
     $("#contact").hover(function() { 
       $("#contact img").attr("src","Images/Menu/contact_hover.png") 
      }, 
      function() { 
      $("#contact img").attr("src","Images/Menu/contact.png") 
     }); 
    } 
}); 
+0

最初のhtmlの外観はどうですか? –

+0

アクティブクラスはどのようにアタッチされますか。 – scottheckel

+2

CSSホバーを使ってみませんか? – Spudley

答えて

2

あなたはjQueryを使ってこれを実行すべきではない、本当に必要はありません。 CSS Image sprites上に読んで、このようなCSSのホバーセレクターを使用してください:

#contact { 
    background: url(/url/of/img) no-repeat; 
} 

#contact:hover { 
    background-position: ; // Change to desired image 
} 

はあなたが怠け者なら、あなたが代わりに悩まのaltogther画像を変更することができ、使用する画像スプライトの背景位置を変更するために、これを行いますスプライト。この方法はよりもはるかに軽く、互換性はです。

0

あなたはhoverに2つ目の呼び出しを行っていないので、他のブロックが最初に実行されるまで、それはです。すべてのイベントハンドラーを$(document).readyに設定してください。

0

あなたはあなたのコードを簡素化する必要があります - で、この

$("#contact").hover(function() { 
    if (!$("#contact").hasClass("active")) { 
     $("#contact img").attr("src","Images/Menu/contact_hover.png") 
    } 
}, 
function() { 
    if (!$("#contact").hasClass("active")) { 
     $("#contact img").attr("src","Images/Menu/contact.png") 
    } 
}); 
+1

あなたはテキストの入力速度で私を打ち負かす、これは多かれ少なかれ私が入ろうとしていたものです。アボート! – numbers1311407

+0

私は答えを構成している間、 "この記事は新しい答えを持っている"という赤いメッセージを私は早く完成しました。私は[西の最速の銃]でした(http: /meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem)今回は:-) – TMS

+0

あなたのコメントをアップアップする:) – TMS

0

の作業例を試してみてください。http://jsfiddle.net/HNGMT/

は**例はなしactiveと1のクラスとの違いを実証するために、2つのdivを使用しています。コースのHTMLは、デモンストレーションの目的のためだけです。 contactクラスのjQueryセレクターは、idセレクターを反映するように変更されます。

HTML:

<div class="contact"><img src="/contact.png" alt="contact inactive" /></div> 
<div class="contact active"><img src="/contact.png" alt="contact active" /></div> 

はJavaScript:

$(".contact").hover(function() { 
    $(this).find("img").attr({src:"contact_hover.png", alt:"contact hover"}); 
}, function(){ 
    var ele = $(this); 
    if(!ele.hasClass("active")){ 
     ele.find("img").attr({ src:"contact.png", alt:"contact inactive"}); 
    } 
}); 
関連する問題