2020.09.06

jQuery

jQueryで発生したエラーの対処法

コンソールでjQueryのエラーが発生した場合の対処法です。エラー発生の有無はjQueryのバージョンやfull版・slim版の違いによっても異なります。1系や2系の古いバージョンを最新の3系に変更すると発生する確率が高いです。

以下はスムーススクロール実装の際に発生したエラーです。

Uncaught Error: Syntax error, unrecognized expression: a[href^=#]

「Syntax error, unrecognized expression」は引用符のエラーです。対処法としては下記のように記述します。

//変更前
$('a[href^=#]').click(function(){

//変更後
$('a[href^="#"]').click(function(){

以下もスムーススクロール実装の際に発生したエラーです。

Uncaught TypeError: $(…).animate is not a function

slim版ではajax系と次のアニメーション系の関数(animate、fadeIn、fadeOut、fadeToggle、fadeTo、finish、stop、slideDown、slideUp、slideToggle)はサポートされていません。そのため、full版に変更が必要です。

//エラー箇所
$("html, body").animate({scrollTop:position}, speed, "swing");

//変更前
<script src="https://code.jquery.com/jquery-3.4.1.slim.js" integrity="sha256-BTlTdQO9/fascB1drekrDVkaKd9PkwBymMlHOiG+qLI=" crossorigin="anonymous"></script>

//変更後
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

以下はloadイベント使用時のエラーです。

Uncaught TypeError: e.indexOf is not a function

loadイベントはajaxのloadメソッドと区別するため、下記のように記述します。

//変更前
$(window).load(function(){

//変更後
$(window).on('load', function(){

以下はbuttonタグの存在チェック記述時のエラーです。

Uncaught TypeError: $(…).size is not a function

sizeメソッドは3系で廃止になったため、lengthプロパティに書き換えます。なお、lengthプロパティをsizeメソッドのようにlength()と記述するとエラーになります。

//変更前
if($('button').size()){

//変更後
if($('button').length){

以下は変数のスコープエラーです。

Uncaught ReferenceError: array is not defined

関数のスコープ内で宣言された変数は、関数の内側からのみ利用可能なローカル変数です。関数の外部からはアクセスできません。変数の宣言を関数の外側に出してグローバル変数にすれば、関数の内側・外側どちらからでもアクセスできます。

//変更前
$("ul li").each(function() {
	var array = [];
	array.push($(this).text());
});
console.log(array);

//変更後
var array = [];
$("ul li").each(function() {
	array.push($(this).text());
});
console.log(array);

以下は文法エラーで、予期しない記号が見つかった場合に発生します。この場合はピリオドが対象です。

Uncaught SyntaxError: Unexpected token '.'

セレクタのクォーテーション閉じ忘れを修正すると、セレクタ内のピリオドを正常に認識してエラーが解消されます。

//変更前
var totoph = $(.toTop).innerHeight();

//変更後
var totoph = $('.toTop').innerHeight();

関連記事

2020.10.09

jQuery

jQueryのindexメソッドで要素の順番を取得、eqメソッドで要素の順番を指定

デモページはこちら jQueryのindexメソッドで要素の順番を取得、eqメソッドで要素の順番を指定してタブ切り替えを実装します。 以下のhtmlの構造でテス…

2020.10.07

jQuery

jQueryのattrメソッド・dataメソッドで要素の属性を取得・変更・新規設定

デモページはこちら jQueryのattrメソッドとdataメソッドで要素の属性を取得・変更・新規設定します。dataメソッドはカスタムデータ属性のみ取得・変更…

2020.10.15

jQuery

jQueryプラグイン jquery.matchHeight.jsの使い方

jQueryプラグイン、jquery.matchHeight.jsの使い方です。全てのページ共通で、以下のhtml構造でテストします。デモページではクラス名bo…

2022.08.26

jQuery

jQueryで最初・最後の要素を取得(first・last)

jQueryのfirst・lastメソッドで最初・最後の要素を取得します。また、first・lastをセレクタとして使用します。以下のhtmlの構造で確認します…

2020.09.20

jQuery

jQueryプラグイン drawer.jsでヘッダーを固定

デモページはこちら jQueryプラグイン、drawer.jsでヘッダーを固定してグローバルナビゲーションを追従させます。 まずhtmlですが、ハンバーガーメニ…

上に戻る