【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」がある場合の処理を記述~~
    }
});

上記の方法で条件分岐してあげればその他のページでは読み込まれませんので、
エラーも出なくなります。

一番良い方法かどうかはわかりませんがとりあえずエラーは消えたのでよかった。

« »