前提
jQueryでデバイスの画面幅に応じて、アコーディオン(accordion_inner)の開閉を自動で行いたいと考えています。
ロード時は下記のコードで正しく動作しています。
jQuery
1 2 $(document).ready(function () { 3 if ($(window).width() < 577) { 4 $(".accordion_inner").slideUp(); 5 } 6 });
次にリサイズ時およびデバイスの回転時にも対応するため、上記とは別に下記コードを追加しました。
IOSデバイスでは、スクロール時にもリサイズが発火してしまうため、
実際に画面幅が変わっていない場合は処理を実行しないように、
最初の画面幅を変数windowWidthに格納して判定するようにしています。
jQuery
1 2 var $windowWidth = $(window).width(); 3 4 $(window).on('resize orientationchange', function () { 5 var $reziedWidth = $(window).width(); 6 if ($windowWidth !== $reziedWidth) { 7 if ($(window).width() < 577) { 8 $(".accordion_inner").slideUp(); 9 }else { 10 $(".accordion_inner").slideDown(); 11 } 12 } 13 });
発生している問題
上記2つのコードで、PCでの挙動は問題なく動作しましたが、
モバイル(iPhone)では、デバイスを回転させたとき、1度は正しく機能するのですが、
2回目以降はアコーディオンの開閉が行われません。
おそらく変数windowWidthが正しく更新されていないことが原因と推測し、
試行錯誤したのですが、修正することができませんでした。
問題点など、ご指摘ご教授いただければ幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。