クリックすると開閉する非常にシンプルなナビゲーションメニューがあります。メニューの動作は、ブラウザのビューポートが特定のサイズを下回っている場合にのみ機能します。
それはすべて、90%の時間でうまく機能します。残りの10%の時間(クライアントにデモンストレーションしているときは、ナッチ)をクリックイベントはまったく発生しません。私の知る限り、この問題はブラウザのサイズが数回変更された後にのみ発生しますが、通常はウィンドウのサイズが変更されたときに正常に機能するため、発生した理由を突き止めるのは困難です。
コード:
var smallViewport = false;
$(document).ready(function(){
if($(window).width() < 520) {
smallViewport = true;
}
if(smallViewport == true) {
$('nav.main').click(function(){
console.log(' + clicky clicky');
if($(this).find('.level-1').hasClass('open') == true) {
$(this).find('.level-1').slideUp('fast').removeClass('open');
} else {
$(this).find('.level-1').slideDown('fast', function(){ $(this).addClass('open'); });
}
})
}
});
$(window).resize(function() {
if($(window).width() < 520) {
smallViewport = true;
} else {
smallViewport = false;
}
console.log(smallViewport);
if(smallViewport == true) {
$('.level-1').removeClass('open').css('display','none');
} else {
$('.level-1').css('display','block');
}
});
問題が顕在化することを選択した場合、サイズ変更関数のconsole.log(smallViewport)は、trueである必要があるときに「true」を出力し、クリックイベントはそれと一緒に発生することを拒否します。
誰かが以前に同様の問題に遭遇したことがありますか?私が見逃している明らかな解決策はありますか?