thisトピックを作成した後、問題は解決したと考えられましたが、何らかの理由でそれがiPadで動作していないと考えました。それはremoveClassがiOS v2で動作しない
のjQueryを何をすべき
はtoggleClass('active')
.menuButton
がクリックされたときになります。 CSS .active
にはdisplay:block;
が入ります。 Jqueryはまた、$(document).on('click', function() { /* CODE */ });
とdivの外側のクリックをチェックし、active
をnavmenu
から削除するので、再び非表示になります。
コードバージョン1
HTML5
<header>
<div class="menuButton">
Menu
</div>
<div class="navmenu">
<ul>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 1</a></li>
</ul>
</div>
</header>
CSS3
.menuButton {
display:block;
cursor:pointer;
}
.navmenu {
display:none;
}
.navmenu.active {
display:block;
}
のjQuery 2.2.1
$(document).ready(function() {
var removeClassVar = true;
$('.menuButton').on('click', function() {
$('.navmenu').toggleClass('active');
removeClassVar = false;
});
$('.navmenu').on('click', function() {
removeClassVar = false;
});
$('html').on('click', function() {
if (removeClassVar == true) {
$('.navmenu').removeClass('active');
}
removeClassVar = true;
});
});
このコードは、Windows上で完璧に動作します(クローム、IE、エッジ、Firfox)、5.1アンドロイド、アンドロイド6.0.1とAndroid 4.4.2(すべての異なるブラウザでテスト)。 SafariとChromeのiPhone 5S(iOS 8.4.1)でこれをテストすると、メニューが開きますが、隠すことはありません。 (iPadや他のバージョンではテストできませんでした)。
コードバージョン2
同じHTML5とCSS3
のjQuery 2.2.1
$(document).ready(function() {
var $ua = navigator.userAgent;
var $event = ($ua.match(/(iPod|iPhone|iPad)/i)) ? "touchstart" : "click";
$(document).on($event, function(ev) {
if ($('.navmenu').hasClass('active')) {
$('.navmenu').toggleClass('active');
}
});
$('.menuButton').on('click', function(e) {
e.stopPropagation();
$('.navmenu').toggleClass('active');
});
});
このコードは、Windows、AndroidとiPhone上で動作し、しかし昨日、私はiPadでそれを借りたことを知った(dどのiOSバージョンであるかわからない)これはメニューを開きますが、何かをクリックするとメニューが閉じて、あなたが望むページにリダイレクトされないため、リンクをクリックすることはできません。
on('click', function()
からon('touchstart', function()
に変更しても状況は変わりません。
誰でもこの問題を解決する方法を知っていますか? Iを試みるの多くは、メニューボタンを.toggleClass('active')
への道を発見し、閉じるボタンを追加した後、コードバージョン3
そのクリックになります.removeClass('active')
。私はbody
をクリックしてクラスを削除する方法を見つける必要があります。
私はこれを使用すると、私がクリックした場所、それは上のメニューが表示されます問題ではないだろうクリックしてください;) – Jeff
私はそれを編集しました。 – alexP