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

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

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

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1335閲覧

jQueryのhoverでマウスを載せた際の要素が何番目から取得し、その要素に対する画像を表示させたいです。

mickey25

総合スコア6

hover

これは、HTMLの 擬似クラス[hover]に関するタグです。Hoverは与えられた要素へマウスカーソルを置くことを意味します。また、タッチ可能なデバイスでユーザーが要素へタッチすることをHoverと呼ぶ場合もあります。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/06/01 13:35

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
jQueryのhoverでマウスを載せた際の要素が何番目から取得し、その要素に対する画像を表示させたいです。
表示にはマウスを載せた時、離した時に
jQueryでcssを display: block , display: none で切り替えて表現したいです。

発生している問題・エラーメッセージ

thisとfindを使って要素を取得するようなのですが、それぞれの取得の仕方と
マウスを載せた際の要素のインデックスと画像の要素のインデックスの紐付け方がわかりません。
下記だと画像全てが表示、非表示されてしまいます。

HTML

1 <div class="store"> 2 <ul class="store_contents"> 3 <div class="store_left"> 4 <img src="img/image1.jpg" class="store_img"> 5 <img src="img/image2.jpg" class="store_img"> 6 <img src="img/image3.jpg" class="store_img"> 7 </div> 8 9 <div class="store_right"> 10 <dl class="store_top"> 11 <a href="#"> 12 <dt>KAMAKURA</dt> 13 <dd>Kanagawa</dd> 14 </a> 15 </dl> 16 <dl class="store_top"> 17 <a href="#"> 18 <dt>KAMAKURA HANARE HASE</dt> 19 <dd>Kanagawa</dd> 20 </a> 21 </dl> 22 <dl class="store_top"> 23 <a href="#"> 24 <dt>OFUNA</dt> 25 <dd>Kanagawa</dd> 26 </a> 27 </dl> 28 <div> 29 </ul>

CSS

1 .store_img { 2 display: none; 3 }

jQuery

1 $('.store_top').hover( 2 function() { 3 $('.store_img_top').css({ display: "block"}) 4 }, 5 function() { 6 $('.store_img_top').css({ display: "none"}); 7 } 8 );

試したこと

それぞれに別クラスを振り、それに対する処理を記述していましたが、それだと一つ一つコードを記述していかないといけないため、カッコ悪いです。。
要素が増えても対応しやすいようにロジカルに書きたいです。

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

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

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

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

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

eneko0513

2020/06/01 14:23

<img src="img/image1.jpg" class="store_img"> と <dl class="store_top"> <a href="#"> <dt>KAMAKURA</dt> <dd>Kanagawa</dd> </a> </dl> が紐づくイメージですか? この並びがバラバラになるということはありますか。
mickey25

2020/06/01 16:06

質問の内容が分かりにくくてすみません。 おっしゃる通りです。 <div class="store_left"> <img src="img/image1.jpg" class="store_img"> <!-- インデックス番号0 --> <img src="img/image2.jpg" class="store_img"> <!-- インデックス番号1 --> <img src="img/image3.jpg" class="store_img"> <!-- インデックス番号2 --> </div> <div class="store_right"> <dl class="store_top"> <!-- インデックス番号0 --> <a href="#"> <dt>KAMAKURA</dt> <dd>Kanagawa</dd> </a> </dl> <dl class="store_top"> <!-- インデックス番号1 --> <a href="#"> <dt>KAMAKURA</dt> <dd>Kanagawa</dd> </a> </dl> <dl class="store_top"> <!-- インデックス番号2 --> <a href="#"> <dt>KAMAKURA</dt> <dd>Kanagawa</dd> </a> </dl> ・ ・ ・ ここのインデックス番号同士が紐づくイメージです。並びがバラバラになることは考えていません。 回答ありがとうございました。 他の回答者様にも回答いただきまして、解決しました! ありがとうございました!
guest

回答1

0

ベストアンサー

こんな感じですか?

javascript

1$(function(){ 2 $('.store_img').hide(); 3 $('.store_top').hover(function(){ 4 var idx=$('.store_top').index(this); 5 $('.store_img').eq(idx).show(); 6 },function(){ 7 $('.store_img').hide(); 8 }); 9});

投稿2020/06/01 14:51

yambejp

総合スコア116724

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

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

mickey25

2020/06/01 16:30

回答ありがとうございました! おかげでやりたいことが実現できました! 回答をいただいたのに大変失礼ですが、 $('.store_img').hide(); とありますが、 [css] .store_img { display: none; } [jQuery] $('.store_top').hover(function(){ var idx=$('.store_top').index(this); $('.store_img').eq(idx).css({display: "block"}); },function(){ $('.store_img').css({display: "none"}); }); でも同じような挙動が確認できました。この場合は hide()を使用する場合と cssに display: none; を使用する場合ではソースコードが多くなり、 cssとjQueryにコードを記述しなければならない為、 hide()を使用するということでよろしいでしょうか?
yambejp

2020/06/02 01:04 編集

cssで設定するとデフォルトで隠す、jsで設定すると読み込み時に隠す の違いです、どちらでも大差ないでしょう
mickey25

2020/06/02 03:08

引き続き回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問