通常のul/liリスト配置のリンクを含む非常に単純なjQueryドロップダウンメニューがあります。ドロップダウンのコードは次のとおりです。
$('body').ready(function() {
if(screen.width <= 720) {
$('.dropdown').hover(function() { $(this).find('.subMenu').toggle(); });
$('.dropdown').click(function() { if( $('this').css('display') != 'none') {
$('this').toggle();
}
});
}
else
{
$('.dropdown').hover(
function() { $(this).stop(true,true).find('.subMenu').slideDown("fast"); },
function() { $(this).stop(true,true).find('.subMenu').hide(); }
);
}
});
モバイルデバイス(720幅は無視してください。今のところテスト用です)では、次の機能を実現したいと思います。
ユーザーがドロップダウンメニューでリンクをタップ>メニューが開いている場合は閉じます
別のメニューがすでに開いているときにユーザーがリンクをタップ>前のメニューを閉じ、現在のメニューを開く
- ユーザーがページの別の場所をタップ>開いているメニューをすべて閉じる
ホバー関数が実際に#2と#3を処理していることがわかりましたが、#1を機能させる方法がわかりません。私はこの特定の試みがなぜあるのかを知っているとかなり確信しています
$('.dropdown').click(function() { if( $('this').css('display') != 'none') {
$('this').toggle();
}
});
失敗します。クリック(またはこの場合はタップ)がホバーイベントをトリガーすると推測しています。ホバーイベントは優先されているように見えるため、メニューを非表示にするのではなく表示します。
これをモバイルデバイスで機能させるにはどうすればよいですか?
編集:私はjQueryv1.7.2を使用しています
HTMLリストの構造は次のとおりです。誰かに役立つ場合(要約版):
<div id="navbar">
<ul>
<li class="dropdown"><a href="#">Link A</a></li>
<li class="dropdown"><a href="#">Link B</a>
<ul class="subMenu">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
</ul>
</li>
</ul>
</div>