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

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

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

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

jQuery

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

Q&A

解決済

1回答

775閲覧

hoverした状態でページをリロードすると意図した動作と逆になる&バブリング?してしまう

kaori314

総合スコア1

JavaScript

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

jQuery

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

0グッド

2クリップ

投稿2022/07/04 07:23

編集2022/07/05 05:38

970px以上で動作するメガメニューを作りたいのですが、困っていることが2つあります。
(ブラウザはChromeとEdgeとFireFoxを使って確認しました。2つの困りごとどちらともFireFoxのみ下記のようになってしまいます。)
分かりにくい説明で申し訳ありませんが、教えていただけるとありがたいです。
よろしくお願いします<(_ _)>

【困りごと1】

li#megabtn にカーソルが乗った状態でページをリロードすると、「li#megabtn からカーソルが離れたときに #megabtnに .is-active がついて、li#megabtn にカーソルが乗った時に #megabtnの .is-active が消える」という風になってしまいます。
ページをリロードした時に li#megabtn にカーソルがある場合でも、#megabtnに .is-activeをすぐにつけるにはどうしたら良いでしょうか。。

【困りごと2】

上記のように、li#megabtn にカーソルが乗った状態でページをリロードすると、「li#megabtn から下にカーソルを動かしたときに#megabtnの .is-activeが付いたり消えたり」してしまいます。
(バブリングというのでしょうか?stoppropagationを使ってみたりしたのですが、解決できませんでした。)

HTML

1 <ul id="menu-test" class="nav navbar-nav dropdown"> 2 3 <li id="megabtn" class="start"> 4 <a class="dropdown-toggle hover-btn sp-hide" href="products/"> 5 商品情報<b class="caret"></b> 6 </a> 7 <div class="megamenu"> 8 <div class="container megawrapper"> 9 <p class="topcategory">商品情報</p> 10 <dl class="megamenu-inner"> 11 <dt>商品カテゴリ1</dt> 12 <dd> 13 <ul> 14 <li><a href="products/01/"><img class="res" src="/images/products01.png" alt="商品1"><span>商品1</span></a></li> 15 <li><a href="products/02/"><img class="res" src="/images/products02.png" alt="商品2"><span>商品2</span></a></li> 16 <li><a href="products/03/"><img class="res" src="/images/products03" alt="商品3"><span>商品3</span></a></li> 17 </ul> 18 </dd> 19 </dl> 20 <ul class="bottom-menu"> 21 <li><a href="product/">商品一覧へ</a></li> 22 <li><a href="products/">商品詳細へ</a></li> 23 </ul> 24 </div> 25 </div> 26 </li> 27 28 <li id="dropdown2"> 29 <a class="dropdown-toggle" href="menu2/"> 30 メニュー2<b class="caret"></b> 31 </a> 32 <ul class="dropdown-menu"> 33 <li><a href="link1/">リンク1</a></li> 34 <li><a href="link2">リンク2</a></li> 35 <li><a href="link3">リンク3</a></li> 36 </ul> 37 </li> 38 39 </ul> 40 41

JavaScript

1<script> 2$(window).resize(function(){ 3 4 $(function(){ 5 var w = $(window).width(); 6 var x = 970; 7 if(w >= x) 8 { 9 10$(function () { 11 $('#megabtn').hover(function(){ 12 $('#megabtn').toggleClass('is-active'); 13 }); 14}), 15$(function () { 16 $('#dropdown2').hover(function(){ 17 $('#dropdown2').toggleClass('open'); 18 }); 19}) 20 } 21}); 22 23}); 24</script>

CSS

1 div.megamenu { 2 display: none; 3 overflow: auto; 4 position: absolute; 5 top: 50px; 6 left: 0; 7 max-height: calc(100vh - 50px); 8 padding: 1.5em 0 3em; 9 z-index: 100; 10 width: 1180px; 11 margin-top:0!important; 12} 13 14 15 #megabtn.is-active div.megamenu { 16 display: block; 17 animation: show .5s ease 0s forwards; 18 -webkit-animation: show .5s ease 0s forwards; 19}

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

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

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

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

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

Lhankor_Mhy

2022/07/05 01:33

ご提示のコードを試してみましたが、問題が再現しませんでした。 おそらく、ご提示の部分には原因はなさそうに思います。 ご提示いただいていない部分に原因があるか、問題の共有が上手くできていないと思います。 問題再現の手順をもう少し詳しく書いていただけますか?
kaori314

2022/07/06 04:28 編集

Lhankor_Mhy様 お返事をくださって、ありがとうございます。 簡潔にしようとして不要と思った部分を省いてしまったので、うまくお伝えが出来なくて、申し訳ありません。 ↑今、こちらでテストしてみているのですが、 大変お手数ですが、もしよろしければ、こちらをご覧いただけませんでしょうか。 よろしくお願い致します<(_ _)>
Lhankor_Mhy

2022/07/05 05:21

ページを拝見しました。 1 については問題が再現しませんでした。 2 については問題が再現しましたが、カーソルの位置にかかわらず、リロードしたか否かにかかわらず、問題が再現しました。 環境:Firefox102.0 Win10
Lhankor_Mhy

2022/07/05 05:25

なお、ご提示のページは 970px 以下ではハンバーガーアイコンになっており、メガメニューが表示されませんでした。
kaori314

2022/07/05 05:54 編集

Lhankor_Mhy様 お忙しいところ早速のご確認をありがとうございます。 すみません、質問を描き間違えてしまっていました。。 正しくは「970px以上で動作させたい」です。 私が使っているブラウザはFireFoxバージョン 102.0 (64 ビット)、Windows 11です。 ブラウザによって動作が違ったりするのは、キャッシュを読み込んでいるからなのでしょうか。 ブラウザのキャッシュは設定から削除して、Shift + Ctrl + Rキー を押して再読み込みしているのですが、、
Lhankor_Mhy

2022/07/05 06:00

かなりコツが必要な感じですが、1を再現することができました。 ページを読み込み終えてメガメニューが出現する瞬間にホバーアウトするような操作をする必要があるようです。Chromeでも、成功率は低いですが、同様のやり方で問題を再現することができました。 なお、2については、まだ再現できていません。
kaori314

2022/07/05 06:33

Lhankor_Mhy様 ありがとうございます。説明不足で大変申し訳ありません。 ご指摘いただいたとおりで、わたしが確認するときにやってみた操作は↓です。 1.ページを読み込み終わるまでカーソルをli#megabtnにのせておく。 2.ページの読み込みが完全に終わった状態かつカーソルがli#megabtnにhoverしている状態。 (FireFoxでは、この時点でメガメニューが出現しません。Chrome、Edgeでは出現。) 3.li#megabtnにhoverしているカーソルをli#megabtnの外に移動する。するとFirefoxでは初めてメガメニューが出現。 上記の2と3で困っています。 原因がわかりますでしょうか。。(:_;)
Lhankor_Mhy

2022/07/05 07:28 編集

繰り返しになりますが、Firefoxでもマウスカーソル載せっぱなしでは問題が再現しませんでした。また、やり方を工夫すればChromeでも再現しています。 そして、やはり 2 は再現しませんでした。 kaori314 さんの環境で通常のやり方では、#megabtn 上にホバーした状態から、メガメニューにマウスを移動してもメニューが閉じないということですよね……?
guest

回答1

0

ベストアンサー

 問題がなかなか再現しないのでアレですが、1 については、toggleClass()はクラスのつけ外しをしてしまうので状態がずれてしまうとずれっぱなしになってしまう、ということではないかと思います。

 とりあえず、ホバーインでaddClass()、ホバーアウトでremoveClass()を使うようにしてみてはどうでしょうか。

投稿2022/07/05 08:08

Lhankor_Mhy

総合スコア36087

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

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

kaori314

2022/07/06 04:29 編集

Lhankor_Mhy様 >>ホバーインでaddClass()、ホバーアウトでremoveClass()を使う 困りごと1についてはこの方法で解決しました(^^) 分かりづらい説明にも関わらずお付き合いいただき、ありがとうございます。 困りごと2に関しては、処理速度の遅いPCで閲覧したときに起こってしまっているようです。 2については未解決ですが、ここで一旦質問を終了させていただきます。 助けていただき、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問