2016-09-16 9 views
0

この例では、ページのフェードインの.p1要素のすべての列にカーソルを合わせると、現在どの要素をフェードインに持ち越して残りの部分ではないのですか?個々の要素を選択する正しい構文は何ですか?

$('.column1, .column2, .column3, .column4, .column5').mouseenter(function() { 
    $(".p1").fadeIn(200); 
    $(this).animate({ 
     height: '100%' 
    }); 
}); 


$('.column1, .column2, .column3, .column4, .column5').mouseleave(function() { 
    $(".p1").fadeOut(200); 
    $(this).animate({ 
     height: '100px', 
    }); 
}); 

答えて

2

このように、イベントをトリガした要素を参照するためにthisキーワードを使用します。

$('.column1, .column2, .column3, .column4, .column5').mouseenter(function() { 
    $(this).fadeIn(200).animate({ 
     height: '100%' 
    }); 
}); 

$('.column1, .column2, .column3, .column4, .column5').mouseleave(function() { 
    $(this).fadeOut(200).animate({ 
     height: '100px' 
    }); 
}); 

はまた、あなたが使用して、すべての要素に共通するクラスを使用して、コードを短縮することができますことに注意してくださいhover()ハンドラとfadeToggle()です。私のために動作しません

$('.column').hover(function() { 
    $(this).fadeToggle(200).animate({ 
     height: $(this).height() == 100 ? '100%' : '100px' 
    }); 
}); 
+0

が、私は全体の要素が出て、単なるテキスト内の、これだけ」.p1" クラス要素でフェードとする必要はありませんが、列がすべき:これを試してみてください見えるようにする。 – Sergi

+0

あなたのHTMLを質問に追加してください。テキストノードではなく要素をアニメートすることができるので、HTMLを変更する必要があるかもしれないことに注意してください。 –

+0

基本的に、私の元のコードでは、私は1列しかなければ、それは完璧にうまくいきます、私は列の上にカーソルを置いて、アニメーションのために上がり、テキストがフェードイン/フェードアウトします。 p1の要素とそれが私が防止したいものです。 – Sergi

関連する問題