【jQuery メモ書き】サイドメニューの固定で該当ページ以外でUncaught TypeError: Cannot read property ‘top’ of undefined が出た
特定のページにて、jQueryでサイドメニューをスクロールに併せて固定したのですが、
クロームのコンソールを確認すると、そのページ以外では以下のエラーが出てました。
「Uncaught TypeError: Cannot read property ‘top’ of undefined」
特に表示などに問題は無いようですが、なんかすっきりしないので、解決策を模索。
全てのページにサイドメニューがあるのであれば問題ないのですが、今回のサイトは特定のページのみ存在します。
その該当ページのサイドメニューを固定するために「#sidebar」を指定しているのですが、
その他のページでは「#sidebar」が無いので’top’が定義できないよ!というエラー。
そりゃそうだ。
なので今回はサイドメニューを固定するためのスクリプトを、
ページ内に「#sidebar」がある場合のみ実行するというif文で対処しました。
$(function(){ if($('#sidebar').length){ ~〜ここに「#sidebar」がある場合の処理を記述~~ } });
上記の方法で条件分岐してあげればその他のページでは読み込まれませんので、
エラーも出なくなります。
一番良い方法かどうかはわかりませんがとりあえずエラーは消えたのでよかった。
タグ: jquery | 2017年1月12日