jQueryの読込にDeferやAsync使ったら動かなくなった
サイトの高速化を行うために読み込むJSを遅延読み込みしようと、あらゆるJSにdeferやasyncを付けていたら、jQueryにDeferを付けた時点でエラーになりアコーデオンメニューとかが動かなくなりました。
<script src='/js/jquery.min.js' defer></script>
そんなときの対処法
jQueryに依存するスクリプトを
window.onload = function() { スクリプト }
や、
window.addEventListener( 'load', function(){ スクリプト }, false);
のようにスクリプトを囲ってやれば、Deferで読み込んでもスクリプトが動くようになります。詳しくは以下のサイトに詳しく例が書いてありましたので参考にしてみてください。
参考サイト