jQueryで要素の有無を調べる際は$('.foo').lengthでなければダメ

JavaScriptで要素の有無を調べる場合

JavaScriptを書いているときにWebページ内に特定の要素があるか調べたいことがある。

jQueryを使用しない場合はdocument.querySelector(要素)で調べることができる。

例えばHTMLコード内にclass="foo"があるか調べたい場合はdocument.querySelector('.foo')となる。

指定した要素がない場合はnullが返ってくる。

// <p class="foo"></p> がコード内にある場合
const foo = document.querySelector('.foo')
if (foo) {
  console.log('.fooは存在します。')
} else {
  console.log('.fooは存在しません!')
}

const bar = document.querySelector('.bar')
if (bar) {
  console.log('.barは存在します。')
} else {
  console.log('.barは存在しません!')
}
// 結果
// .fooは存在します。
// .barは存在しません!

JavaScriptで要素の有無を調べるサンプル

jQueryの場合$('.foo')は不可

JavaScriptのコードを見ているとたまにjQueryで$('.foo')と書いて要素の有無を調べているコードがあるが、$('.foo')のように書くとjQueryの場合は要素がなくてもnullが返ってこない。

そのため必ず$('.foo').lengthのようにlengthを付けて要素数を取得する必要がある。

jQueryに慣れていない初心者だと$('.foo')のようにlengthを省いて書いてしまうケースが結構多いので注意が必要。

// <p class="foo"></p> がコード内にある場合
if ($('.bar')) {
  console.log('.barは存在します。')
} else {
  console.log('.barは存在しません!')
}

if ($('.foo').length) {
  console.log('.fooは存在します。')
} else {
  console.log('.fooは存在しません!')
}

// 結果
// .barは存在します。(実際は存在しない)
// .fooは存在します。

jQueryで要素の有無を調べるサンプル