2012-01-11 12 views
1

私は、スタッフページの情報を表示したり微妙に隠すためのJavaScriptをいくつか作成しました。基本的に、3つのエンブレムと3つの説明があります。デザインエンブレムの上にマウスを置くと、デザインチームの説明とイメージが表示されます(その逆も同様です)。ここでは、この行うに私のコードです:jQueryコードを書くための良い方法はありますか?

$('.emblem img:first').hover(
      function() { 
       $('.description:eq(1), .description:eq(2)').css({opacity : 0.2}); 
       $('.devStaff').css({opacity : 0.2}); 
      }, 
      function(){ 
       $('.description:eq(1), .description:eq(2)').css({opacity : 1}); 
       $('.devStaff').css({opacity : 1}); 
      } 
     ); 

     $('.emblem img:eq(1)').hover(
      function() { 
       $('.description:eq(0), .description:eq(2)').css({opacity : 0.2}); 
       $('.designStaff').css({opacity : 0.2}); 
      }, 
      function(){ 
       $('.description:eq(0), .description:eq(2)').css({opacity : 1}); 
       $('.designStaff').css({opacity : 1}); 
      } 
     ); 

     $('.emblem img:eq(2)').hover(
      function() { 
       $('.description:eq(0), .description:eq(1)').css({opacity : 0.2}); 
       $('.designStaff').css({opacity : 0.2}); 
      }, 
      function(){ 
       $('.description:eq(0), .description:eq(1)').css({opacity : 1}); 
       $('.designStaff').css({opacity : 1}); 
      } 
     ); 

は今、このを見ては、私は間違いなくこれを行うには良い方法があることを感じ、私は誰もがいくつかのアドバイスを提供することができるだろうか不思議でしたか?

+2

あなたの説明によると、これはすべてCSSで行うことができるようです。それを行うためにjavascriptを使用することは間違っているのではなく、はるかに少ないコードになります。 jsfiddle.netでこれを構築すれば、本当に良い答えが得られるかもしれません。 – BZink

+0

繰り返しコードと同じコードを探します。変化するものを抽出し、同じものをテンプレートにして、変数をテンプレートに挿入します。 –

答えて

1

を一般的に、あなた自身を繰り返してはならない(http://en.wikipedia.org/wiki/Don」 t_repeat_yourself)

function fadeOut(eqNum1, eqNum2) { 
    $('.description:eq('+eqNum1+'), .description:eq('+eqNum2+')').css({opacity : 0.2}); 
    $('.devStaff').css({opacity : 0.2}); 
} 
function fadeIn(eqNum1, eqNum2){ 
    $('.description:eq('+eqNum1+'), .description:eq('+eqNum2+')').css({opacity : 1}); 
    $('.devStaff').css({opacity : 1}); 
} 

$('.emblem img:first').hover(fadeOut(1,2), fadeIn(1,2)); 

$('.emblem img:eq(1)').hover(fadeOut(0,2),fadeIn(0,2)); 

$('.emblem img:eq(2)').hover(fadeOut(0,1),fadeIn(0,1)); 
1

あなたは:lt(3)によって:first:eq(1):eq(2)を置き換えることができます。

$('.emblem img:lt(3)').hover(
     function() { 
      $('.description:lt(2)').css({opacity : 0.2}); 
      $('.designStaff').css({opacity : 0.2}); 
     }, 
     function(){ 
      $('.description:lt(2)').css({opacity : 1}); 
      $('.designStaff').css({opacity : 1}); 
     } 
    ); 
関連する問題