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

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

新規登録して質問してみよう
ただいま回答率
85.47%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

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

Q&A

解決済

2回答

1081閲覧

java script でマウスホバー時に待機時間後に実行したい

Mania

総合スコア48

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2022/03/18 07:02

編集2022/03/18 07:27

JQueryのスライドショー 「slick」を利用して、
トヨタ公式サイトのメガメニューのような、上部メニューをマウスホバーすると
該当の番号のスライドが表示されるメガメニューを作っています。

おおむね上手く制作できたのですが、トヨタ公式サイトのように、
マウスを上部カテゴリーに「連続して次々にオンホバーした際」に、
反応しない項目が出てきてしまいます。

トヨタ公式サイトですと、かなり精密に素早く反応しているのです。
https://toyota.jp/index.html

<div id="header-mega-menu"> <div class="mega-menu-content"> <div class="mega-menu-content-item"> <ul class="nav-bodytype"> <li class="slick-GoTo-0" aria-controls="tab01" aria-selected="true" role="tab"> <button type="button">コンパクト</button></li> <li class="slick-GoTo-1" aria-controls="tab02" aria-selected="false" role="tab"> <button type="button">ミニバン</button></li> <li class="slick-GoTo-2" aria-controls="tab03" aria-selected="false" role="tab"> <button type="button">セダン</button></li> </ul> ●●ここから、スライドさせる要素を記述●● </div> </div> </div> <script> // 指定のスライドに移動 $('.slick-GoTo-0').on('click mouseenter', function() { $('.slider').slick('slickGoTo', 0, false); }); $('.slick-GoTo-1').on('click mouseenter', function() { $('.slider').slick('slickGoTo', 1, false); }); $('.slick-GoTo-2').on('click mouseenter', function() { $('.slider').slick('slickGoTo', 2, false); }); </script>

現状、上記のように記述しています。
下記のようにした場合、マウスホバー後にsetTimeoutしてしまいます。
できれば、0.3秒ほどマウスホバーした場合に、動作を開始してほしいのです。

<script> // 上記にsetTimeoutを追加してみたが、駄目でした。 $('.slick-GoTo-0').on('click mouseenter', function() { setTimeout(function(){ $('.slider').slick('slickGoTo', 0, false); },300); }); </script>

当方、WEB系の企画制作の担当で、HTML・CSSは分かるのですが、
Javascriptには詳しくないので、やさしく教えてもらえると助かります。

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

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

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

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

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

Lhankor_Mhy

2022/03/18 07:04

Javascript の // は行コメントです。その行の終わりまでコメントと扱われます。
guest

回答2

0

mouseleaveイベントでタイマーを止めるのはどうでしょうか。

WindowOrWorkerGlobalScope.clearTimeout() - Web API | MDN


質問の追記に合わせて追記

当方、WEB系の企画制作の担当で、HTML・CSSは分かるのですが、
Javascriptには詳しくないので、やさしく教えてもらえると助かります。

(やさしさここから)
Web系の業界に詳しくないので的外れなことをかもしれませんが、社内のコーダーに頼めばすぐ終わる話ではないのですか?
たとえば、ここで私が書いたコードをあなたが実装したとして、そのコードにセキュリティ的な問題があった場合は、あなたの責任になってしまうのでしょうか?
それも覚悟の上でやっているのであればいいのですが、そうではないならばジャンル違いのお仕事は控えた方が自分を守ることにつながると思います。
もし、社内の力関係で難しいのであれば、上司の方に相談してみるのもいいかもしれないですね。
(やさしさここまで)


動作するかは試してないです。

js

1$('.slick-GoTo-0').on('click mouseenter', function () { 2 const timer = setTimeout(function () { 3 $('.slider').slick('slickGoTo', 0, false); 4 }, 300); 5 6 $('.slick-GoTo-0').one('mouseleave', function () { 7 clearTimeout(timer); 8 }) 9});

投稿2022/03/18 07:15

編集2022/03/18 07:45
Lhankor_Mhy

総合スコア36134

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

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

退会済みユーザー

退会済みユーザー

2022/03/18 07:17

setTimeout() したときの戻り値をtimeoutIDとして保持して、それを使ってclearTimeout()する形。
Mania

2022/03/18 07:31

Javascriptには詳しくないので、全くわからないのですが……。 ようするに、メニューA → メニューB → メニューC と連続して動かした際に、 メニューA & Bにマウスホバーした際のsetTimeout() タイマーを、 mouseleaveイベントでキャンセルするという事でよろしいでしょうか?
Lhankor_Mhy

2022/03/18 07:37

> メニューA & Bにマウスホバーした際のsetTimeout() タイマーを、 > mouseleaveイベントでキャンセルするという事でよろしいでしょうか? まさにおっしゃるとおりです。
Mania

2022/03/18 08:06

わざわざ、ありがとうございます。 追記されたコードを試してみたところ、理想どおりに動作しました。 10回に1回くらい、動作がついていかない事があるようですが、 その際はまったく動かないので、マウスクリックしてもらえるかなと思います。
Lhankor_Mhy

2022/03/18 08:36

お役に立てなかったようで残念です
Mania

2022/03/18 12:13

いやいや、解決しました。ありがとうございました。 setTimeout の秒数を弄ってやったら、かなり改善しました。 ただ、あまりに速く何度も動かし過ぎると、 うまく動作しない場合はありますね。
guest

0

自己解決

Lhankor_Mhy さんのコードで、解決しました。
ありがとうございました。

その他、Slickの下部にあるDotsを、文字列に変更する形で実装することも出来るようです。
https://oyaoya1123.hatenablog.com/entry/2020/03/09/223119

Java-scriptが苦手な場合には、この方法のほうがお手軽かもしれませんね。

button#DotsのCSSクラスを記述 { &:before { content: '変更したい文字列をここに記載する'; } }

投稿2022/03/18 08:17

Mania

総合スコア48

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問