質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3289閲覧

マウスオーバーで全部メニューが反応してしまう。

naru-a

総合スコア14

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/08/20 06:19

liタグhoveで
ピンクの透過背景にフェードで表示し
画像2種をそれぞれタイミングをずらして
上からスライドしてくる動作を実装したいです。
動きはできたのですが、liのhoverで全部のメニューが動作してしまいます。
hoverしたliの下の要素だけ動作するようにするにはどうすればいいでしょうか?

【html】
div#linkList
ul
li
img
div.mask
a
p.txt
p.info
【css】
.maskに透明ピンク
aタグにrelative

【js】
$(function(){
$("#linkList .mask .info, #linkList .mask .txt").css({
position: 'absolute',
top: '-170px',
left: '0'
});
$("#linkList .mask .info").css({
top: '-50px'
});

$("#linkList ul li").hover(function(){ $("#linkList .mask").css({ backgroundColor: '#F34EA3' }).stop(true).fadeTo(200,0.75); $("#linkList .mask .info").stop(true).delay(100).animate({ top: '169px' }, 250); $("#linkList .mask .txt").stop(true).delay(400).animate({ top: '0' }, 350); },function(){ $("#linkList .mask").fadeTo(600,0); $("#linkList .mask .info, #linkList .mask .txt").stop(true).animate({ top: '-170px' }, 300); });

});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

hover処理を以下のように変更するとどうでしょうか。

javascript

1$("#linkList ul li").hover(function(){ 2 $(this).find(".mask").css({ 3 backgroundColor: '#F34EA3' 4 }).stop(true).fadeTo(200,0.75); 5 $(this).find(".mask .info").stop(true).delay(100).animate({ 6 top: '169px' 7 }, 250); 8 $(this).find(".mask .txt").stop(true).delay(400).animate({ 9 top: '0' 10 }, 350); 11 },function(){ 12 $(this).find(".mask").fadeTo(600,0); 13 $(this).find(".mask .info, .mask .txt").stop(true).animate({ 14 top: '-170px' 15 }, 300); 16}); 17

投稿2015/08/20 06:27

orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naru-a

2015/08/25 05:25

ありがとうございます。 ばっちりでした! $(this).find()~、覚えておきます!
orange0190

2015/08/25 05:32

少々解説すると、ホバーのイベントが発生したときに $("#linkList .mask")である要素すべてに対して処理を行っていたため、すべてが反応していました。 $(this)は何かのイベントが発生した要素(今回はホバーした要素)に対して用いることができます。ですので、 $(this).find()でホバーが発生した要素の中で対象となる要素を見つけ出し、処理を行うことができます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問