タブレットを縦向きから横向きに、またはその逆に切り替えるときに問題が発生し、タブレットは jQuery コードを再実行しません。
シナリオは次のとおりです。
<div class="links">
<ul class="hide">
<li></li>
</ul>
</div>
最初は、ul 要素はCSSによって隠されています。次に、このコードがクリックイベントで開かれるようにします。
if ($(window).width() <= 800) { // portrait orientation
$(".links").click(function() {
$(this).find('ul').slideToggle();
});
}
これまでのところうまくいきます。何もクリックしなくても、ランドスケープに切り替え続けても問題なく動作します。問題は、縦向きで要素をクリックして開き、もう一度クリックして閉じるときに発生します。
2 回目のクリックの後、ul
要素が追加されたようです (最初はCSSstyle="display:none"
によって処理されるため、これはありません)。これが、ランドスケープに戻ると要素が非表示になった理由です。次に、このコードを以下に示してみました。ul
if ($(window).width() > 800) { // landscape orientation
if ($('.links ul').is(":hidden")) {
$('.links ul').css("display","block");
}
}
ただし、ul要素を非表示にして横向きに切り替えるたびに、このコードが実行されなかったようです。向きを切り替えるたびにブラウザがコードを実行するようにするための回避策はありますか?