2017-07-02 4 views
0

私はhr要素に影響を与えようとしています。ユーザーがロゴの上にカーソルを置くと、下のhr要素の幅が100%に変更され、不透明度が追加されます。jQueryと 'this' issue

現在、すべてのhr要素は同時に変更されます。どのようにイメージを変えただけでいいのですか?

これは、現在

$('.img-fluid').hover(function(){ 
    $(this).animate({ 
     opacity:0.5 
     },200); 
    $('.logo').animate({ 
     width:'100%' 
    },200); 

}, 
function(){ 
    $(this).animate({ 
     opacity:1 
     },200); 
    $('.logo').animate({ 
     width:'50%' 
    },200); 
}); 

$('.img-fluid').hover(function(){ 
    $('.logo',this).animate({ 
     width:'100%' 
    },200); 
}, function(){ 
    $('.logo',this).animate({ 
     width:'50%' 
    },200); 

}); 
私のコード

HTMLです:

<div class="row col-md-11 mx-auto"> 
    <div class="col-md-2 mx-auto"> 
     <img src="images/logos/lyle_scott.png" class="img-fluid"> 
     <hr class="logo"> </div> 
    <div class="col-md-2 mx-auto"> 
     <img src="images/logos/makser.jpg" class="img-fluid"> 
     <hr class="logo"> </div> 
    <div class="col-md-2 mx-auto"> 
     <img src="images/logos/maxfli.jpg" class="img-fluid"> 
     <hr class="logo"> </div> 
    <div class="col-md-2 mx-auto"> 
     <img src="images/logos/mizuno.png" class="img-fluid"> 
     <hr class="logo"> </div> 
    <div class="col-md-2 mx-auto"> 
     <img src="images/logos/odyssey.jpg" class="img-fluid"> 
     <hr class="logo"> </div> 
    </div> 

また、私がダウンしてこのコードを短縮し、1つの関数にそれをすべて実行できるようにしたいと思います。現在、各エフェクトは個別に処理されています。

は良いアイデアのために、この画像を参照してください:https://i.stack.imgur.com/mSIdj.png

+0

「ロゴ」はあなたが 'hr'要素に与えたCSSクラスですか? HTMLコードを入力してください。私たちはイメージからそれを推測することはできません。 – trincot

+0

htmlコードを追加すると、要素とそのクラスを知ることができます – Dij

+0

こんにちは、そこに追加しました。 – Darren

答えて

0

セレクタでクラスを使用するだけであれば、同じクラスのすべての要素が選択されます。 hrが画像と同じ親要素内にあるので、適切なhr要素を取得するには、jQuery .siblings()メソッドが必要です。

$(".img-fluid").on("mouseenter", function() { 
    $(this).animate({ 
     opacity:1 
    },200); 
    $(this).siblings('.logo').animate({ 
     width:'100%' 
    },200); 
}); 
$(".img-fluid").on("mouseleave", function() { 
    $(this).animate({ 
     opacity:0.5 
    },200); 
    $(this).siblings('.logo').animate({ 
     width:'50%' 
    },200); 
}); 
+0

これは完璧です、ありがとうございます。また、ホバーで不透明度を低くしたり、高くしたり、明るくしたりするのもいいです。それはまったく考えなかった:) – Darren

0

私はあなたのHTMLの構造を知らないが、私はあなたがそれの内側にロゴの要素を持って、その後img-fuildクラスに置くことを想定しています。

$(".img-fluid").on("mouseover", function() { 
     $(this).animate({ 
      opacity:0.5 
      },200); 
     $(this).find('.logo').animate({ 
      width:'100%' 
     },200); 
    }); 
0

可能であれば、アニメーションやトランジションを使用してjQueryではなくCSSを使用します。 :ホバーを使うと、それがすでにどのように動作しているかということから、単一の要素にのみ影響を与えることを心配する必要はありません。

+0

ええ、私はCSSを使ってこれを達成できると知っていましたが、jQueryを学び始めたばかりなので、この方法でやるほうがいくぶん有益でしょう。 – Darren