私はこのjsコードを試しました:
<script type="text/javascript">
$(document).ready( function() {
var timer;
$('.top-menu-first-ul li').hover(function(){
if(timer) {
clearTimeout(timer);
timer = null
}
timer = setTimeout(function() {
$(this).find('ul').slideToggle(100);
}, 500)
},
// mouse out
});
});
</script>
このhtmlで:
<ul class="top-menu-first-ul">
<li>
<a href="http://google.com">Google</a>
<ul class="top-menu-second-ul">
<li><a href="http://translate.google.com">Google Translate</a></li>
<li><a href="http://images.google.com">Google Images</a></li>
<li><a href="http://gmail.google.com">Gmail</a></li>
<li><a href="http://plus.google.com">Google Plus</a></li>
</ul>
</li>
<li>
<a href="http://facebook.com">Facebook</a>
</li>
<li>
<a href="http://twitter.com">Twitter</a>
</li>
</ul>
しかし、それは機能していません。
Googleリンクなどにカーソルを合わせるとサブメニューが表示され、300ms後にその他が表示されます。
そのため、ユーザーがサブメニューをすばやくホバーし、少なくとも 300 ミリ秒ホバー リンクにとどまらない場合に、サブメニューをロードしないようにする必要があります。
次に、彼がリンクを離れたときにコードの実行を停止する (または上にスライドする) 必要があります。彼が何度も何度も何度も何度も戻ってきた場合、彼はホバリングをやめ、コードはまだ実行されているため、リンクの上に何回ホバリングしたか. 私は何とかこれが起こらないようにする必要があります。
編集: hoverIntent などのプラグインなしでこれを解決する必要があります。可能であれば、単純な javascript と jQuery だけです