アイフォンSEは「position:fixed」した要素のz-indexが効かない
兵庫県三田市でホームページ製作をしているゴリラドットです。
jqueryでページ内のスムーズなスクロールを実装しようとした際、「Uncaught Error: Syntax error, unrecognized expression: a[href^=#]」というエラーが出てきてスクロールできない!というときがあります。私も久しぶりに実装してハマりました。
ということでここではjqueryで実装するスムーススクロールで「Uncaught Error: Syntax error, unrecognized expression: a[href^=#]」というエラーが出ちゃった場合の解決方法を紹介しますね。
「a[href^=#]」をちょこっと変えて解決
これってjqueryのバージョンが影響してるエラーなんですよね。とりあえず解決方法から。
「$('a[href^=#]')
」を「'a[href^="#"]'
」に変更すればエラーがなくなり、無事スムーススクロールが有効になります。
ようは「#」をダブルクォーテーションで囲おう!というコト。
これにて無事解決!やったね!
jqueryエラーの原因は?
「Uncaught Error: Syntax error, unrecognized expression: a[href^=#]」というjqueryのエラー、解決はしたものの結局原因は何だったの?というのをサクッと書いておきますね。気になる人だけ読んでみてください。
上でもチラッと書いたんですが、このエラーはjqueryのバージョンの違いによって発生しています。
jqueryって昔は1.x系ていうのが主流…というかこれしかなった時代があって、その後2.x系それから3.x系といろんなバージョンのjqueryが増えて、今は1~3までいろんなバージョンのjqueryがそこかしこに転がってる状態なんです。
jquery1.x系は古いブラウザまでサポートしてる、とかそいういう違いがあるんですが、表記方法や対応もバージョンによって異なる部分があるんです。
今回jqueryでページ内スムーススクロールを実装するとき、たぶん誰か詳しい方が紹介してくれているjqueryソースコードをそのままコピペしたと思います。楽ですし一から自分でゴリゴリ実装するより実績あるコードの方が信頼おけますもんね。
ただこのネットで紹介されているjqueryコードは1.x系のものが多いんだと思います。なので今お使いのjqueryとバージョン差異があってうまくスクロールできなかった、と。
上ではjquery2.x、jquery3.xで有効な書き方、ダブルコーテーション「”」(ちょんちょんですね)で囲う書き方に変えて解決していますが、例えば読み込むjqueryを1.x系に変えてもスムーススクロールが有効になるハズです。
まとめ
jqueryでページ内スムーススクロールを実装しようとしたときに出てくる「Uncaught Error: Syntax error, unrecognized expression: a[href^=#]」というエラーについて解決方法を紹介しました。
まとめるとjqueryのバージョン差異によって起こってるから、ダブルクォーテーションで囲って解決しよう!という感じ。参考にしてみてくださいね。