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には詳しくないので、やさしく教えてもらえると助かります。
回答2件
あなたの回答
tips
プレビュー