【jQuery】セレクタの書き方:$()の基本とCSSセレクタとの違い

JavaScript

こんにちは、かつコーチです。

jQueryを使い始めたばかりの頃、「$()の中に何を書けばいいのか分からない」と悩んだ経験はありませんか。

私も最初は、CSSのセレクタと同じ書き方でいいのか、それとも別の書き方があるのか、混乱していました。

この記事では、jQueryの基本である $() セレクタの書き方を、CSSセレクタや素のJavaScriptの querySelector との違いも交えながら解説します。

読み終える頃には、要素の取得方法に迷わなくなっているはずです。

$()セレクタの基本

$()とは何か

jQueryでは、操作したいHTML要素を取得するときに $() という関数を使います。

これをセレクタ(HTML要素を指定するための書き方)と呼びます。

$('セレクタ')

この $() の中にCSSと同じ書き方でセレクタを指定すると、該当する要素をまとめて取得できます。

id・class・タグ名での指定方法

もっとも基本的な3つの指定方法を見ていきましょう。

<h1 id="title">見出しです</h1>
<p class="text">本文です</p>
<button>ボタンです</button>
// idで指定(先頭に#)
$('#title').css('color', 'red');

// classで指定(先頭に.)
$('.text').css('color', 'blue');

// タグ名で指定(そのまま)
$('button').css('color', 'green');

# はid、. はclass、何もつけなければタグ名という点は、CSSの書き方とまったく同じです。

CSSが書ける人であれば、この時点でほとんど迷わず使えるはずです。

CSSセレクタとの違い

基本的な書き方はCSSと同じ

先ほどの例からも分かる通り、jQueryのセレクタは基本的にCSSセレクタの書き方をそのまま流用できます。

子孫セレクタや属性セレクタも同様です。

// 子孫セレクタ(.card の中の .title)
$('.card .title').text('タイトル更新');

// 属性セレクタ(data-status="done" を持つ要素)
$('[data-status="done"]').addClass('completed');

// 複数条件の組み合わせ
$('ul.list > li:first-child').addClass('active');

:first-child のような擬似クラス(要素の状態や位置を指定するCSSの記法)も使えるため、CSSの知識がそのまま活きます。

jQuery独自の拡張セレクタ

jQueryには、CSSの標準仕様にはない独自の拡張セレクタも用意されています。

代表的なものが :visible(表示されている要素のみ)や :hidden(非表示の要素のみ)です。

// 表示されている要素だけを取得
$('.item:visible').fadeOut();

// フォーム部品だけを取得
$(':input').prop('disabled', true);

これらはCSSでは存在しない書き方なので、「CSSセレクタ+jQuery独自の拡張」という理解をしておくと整理しやすいです。

querySelectorとの違い

素のJavaScriptとの書き方比較

素のJavaScriptで同じように要素を取得する場合は、document.querySelectordocument.querySelectorAll を使います。

// 素のJavaScript:1つだけ取得
const title = document.querySelector('#title');
title.style.color = 'red';

// 素のJavaScript:複数取得してループ処理
const texts = document.querySelectorAll('.text');
texts.forEach(function (el) {
  el.style.color = 'blue';
});
// jQuery:1つでも複数でも書き方は同じ
$('#title').css('color', 'red');
$('.text').css('color', 'blue');

見比べると分かる通り、jQueryは「1件取得」と「複数件取得」を意識せず、同じ $() で統一的に扱える点が大きな特徴です。

戻り値の違いに注意する

素のJavaScriptとjQueryでは、セレクタで取得したものの(データの種類)が異なります。

querySelector はHTML要素そのものを返しますが、$()jQueryオブジェクト(jQuery独自の機能を使えるように要素をラップしたもの)を返します。

このため、jQueryオブジェクトに対して素のJavaScriptのメソッド(style.colorなど)をそのまま使おうとするとエラーになります。

よくあるつまずきポイント・エラー対処

jQueryオブジェクトとDOM要素を混同するミス

私が初心者の頃、実際にハマったのがこのパターンです。

❌ Before(jQueryで取得したのに素のJavaScriptの書き方をしてしまう)

$('#title').style.color = 'red';
// Uncaught TypeError: Cannot set properties of undefined (setting 'color')

コンソールにこのエラーが出て、最初は原因がまったく分かりませんでした。

調べてみると、$('#title') はDOM要素そのものではなく、jQueryオブジェクトを返しているため、.style というプロパティを持っていないことが原因でした。

✅ After(jQueryのメソッドを使う)

$('#title').css('color', 'red');

もし、どうしても素のJavaScriptのDOM要素として扱いたい場合は、[0].get(0) を使ってDOM要素を取り出すこともできます。

// jQueryオブジェクトからDOM要素を取り出す
const titleEl = $('#title')[0];
titleEl.style.color = 'red';

このように「今扱っているのはjQueryオブジェクトなのか、DOM要素なのか」を意識することが、エラーを避けるコツです。

まとめ

この記事のポイント

  • $() の基本的な書き方はCSSセレクタとほぼ同じである
  • id・class・タグ名・子孫セレクタ・属性セレクタはそのまま使える
  • :visible :hidden などjQuery独自の拡張セレクタもある
  • querySelector はDOM要素、$() はjQueryオブジェクトを返す点が最大の違いである
  • jQueryオブジェクトに素のJavaScriptのプロパティを直接使おうとするとエラーになる

次に読むべき記事

セレクタで取得した要素を連続して操作したい方は、「メソッドチェーンの書き方と考え方」もあわせてご覧ください。

jQueryの基礎から復習したい方は、「jQueryとは?2026年でも使われる理由とインストール方法」がおすすめです。

タグ: jQuery, 初心者向け, 基本文法

タイトルとURLをコピーしました