jQueryを書き始めたものの、$('.item')のピリオドや$('#menu')のシャープが何を表すのか分からず、手が止まることがありますよね。
セレクタは「HTMLのどの要素へ処理するか」を選ぶ記述です。まずタグ・class・idの3つを覚え、必要になったら属性や親子関係で絞り込めば、初心者でも迷わず指定できます。
先に結論:基本形は
$('セレクタ')です。CSSと同じ書き方で対象を選び、その後ろへ.addClass()や.on()などの処理をつなげます。
jQueryのセレクタとは
Webページには、見出し、ボタン、画像、入力欄など多くのHTML要素があります。セレクタを使うと、その中から条件に一致する要素だけを取り出せます。

上の図では、$('.item')がclass名itemを持つ要素を選んでいます。選択結果はjQueryオブジェクトになり、色を変える、クリックを受け取る、表示を切り替えるといった処理を続けて指定できます。
const $items = $('.item');
$items.addClass('is-active');$itemsの先頭に付けたドル記号は必須ではありませんが、「jQueryで選んだ要素が入っている変数」と見分けやすくするためによく使われます。
最初に覚えたい基本セレクタ
| 選びたい対象 | 書き方 | 意味 |
|---|---|---|
| タグ | $('button') | すべてのbutton要素 |
| class | $('.item') | class=”item”の要素 |
| id | $('#menu') | id=”menu”の要素 |
| 複数 | $('h2, h3') | すべてのh2とh3 |
classにはピリオド(.)、idにはシャープ(#)を付けます。ここを忘れると別のタグ名として解釈され、対象が見つかりません。
HTMLとセレクタの対応を確認する
次のHTMLでは、3種類の指定を一度に試せます。HTMLはindex.html、jQueryはscript.jsへ分けて記述します。
<h2 id="section-title">おすすめ教材</h2>
<ul class="item-list">
<li class="item">HTML入門</li>
<li class="item">CSS入門</li>
<li class="item">jQuery入門</li>
</ul>$('li'); // liタグをすべて選ぶ
$('.item'); // itemクラスを持つ要素をすべて選ぶ
$('#section-title'); // section-titleというidの要素を選ぶ
$('h2, .item'); // h2とitemクラスの両方を選ぶclassは同じページ内で複数の要素に付けられます。idはページ内で重複させず、1つの要素を識別するときに使ってください。
親子関係で対象を絞り込む
同じclass名が複数の場所にあるときは、親要素から範囲を絞ります。空白を使う「子孫セレクタ」と、>を使う「子セレクタ」の違いが大切です。
<nav class="global-nav">
<ul>
<li><a href="/">ホーム</a></li>
<li><a href="/about/">このサイトについて</a></li>
</ul>
</nav>$('.global-nav a'); // global-nav内にあるすべてのa
$('.global-nav > ul'); // global-navの直下にあるulだけ
$('.global-nav > li'); // 該当なし。liはulの子要素だから$('.global-nav' > 'li')のように、記号の前後で文字列を分ける書き方は誤りです。セレクタ全体を1組のクォーテーションで囲み、$('.global-nav > li')と書きます。
属性や状態でさらに絞り込む
フォームや商品一覧では、タグやclassだけでは足りないことがあります。その場合は、角括弧を使う属性セレクタが便利です。
$('input[name="email"]'); // nameがemailの入力欄
$('input[type="checkbox"]:checked'); // 選択済みのチェックボックス
$('.product[data-status="recommended"]'); // おすすめの商品
$('a[href^="https://"]'); // https://で始まるリンク[data-status="recommended"]は、data-status属性の値が完全に一致する要素を選びます。見た目を表すclassとJavaScript用の条件を分けたいときにも使いやすい指定です。
最初・最後・何番目かを選ぶ
選択した要素のうち1件だけを使いたい場合は、セレクタへ古いjQuery独自の:firstや:eq()を混ぜるより、.first()や.eq()で後から絞る書き方が分かりやすいです。
const $items = $('.item');
$items.first(); // 最初の1件
$items.last(); // 最後の1件
$items.eq(1); // 2番目の1件。番号は0から始まる.eq(1)が2番目になるのは、JavaScriptの番号が0から始まるためです。一方、CSSの:nth-child(2)は1から数えます。似ていますが基準が違うので注意してください。
実例:おすすめの商品カードだけを選ぶ
ここからは、属性セレクタを使うサンプルを実際に作ります。最初は3枚とも同じ枠線で、まだ何も選択されていません。

index.htmlに操作ボタンと商品カードを用意します。商品カード自体もbutton要素にしているため、マウスだけでなくTabキーとEnterキーでも操作できます。
<div class="actions">
<button type="button" id="select-recommended">おすすめを選ぶ</button>
<button type="button" id="reset">リセット</button>
</div>
<ul class="product-list">
<li>
<button type="button" class="product-card" data-status="recommended">
<span class="tag">おすすめ</span>
<strong>はじめてのHTML</strong>
<span>基礎から学べる入門書</span>
</button>
</li>
<li>
<button type="button" class="product-card" data-status="standard">
<span class="tag">定番</span>
<strong>CSSレイアウト練習帳</strong>
<span>手を動かして身につける</span>
</button>
</li>
<li>
<button type="button" class="product-card" data-status="recommended">
<span class="tag">おすすめ</span>
<strong>jQueryサンプル集</strong>
<span>よく使う動きを試せる</span>
</button>
</li>
</ul>
<p id="result" aria-live="polite">まだ選択されていません</p>
<script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
<script src="script.js"></script>次にstyle.cssへ、カードの並びと選択時の見た目を記述します。画面が狭いときは1列へ切り替えるため、スマートフォンでも横にはみ出しません。
* {
box-sizing: border-box;
}
.actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 24px;
}
.actions button {
min-height: 46px;
padding: 10px 20px;
border: 2px solid #1676d2;
border-radius: 999px;
background: #1676d2;
color: #fff;
font: inherit;
font-weight: 700;
cursor: pointer;
}
.product-list {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 16px;
margin: 0;
padding: 0;
list-style: none;
}
.product-card {
display: block;
width: 100%;
height: 100%;
padding: 22px;
border: 2px solid #d9e3ef;
border-radius: 18px;
background: #f8fbff;
color: #18304a;
font: inherit;
text-align: left;
cursor: pointer;
}
.product-card strong,
.product-card > span:last-child {
display: block;
}
.product-card.is-selected {
border-color: #1676d2;
background: #eaf5ff;
transform: translateY(-4px);
}
button:focus-visible {
outline: 3px solid #ffbf47;
outline-offset: 3px;
}
@media (max-width: 680px) {
.product-list {
grid-template-columns: 1fr;
}
}「おすすめを選ぶ」を押したときだけ、data-status="recommended"のカードへis-selectedクラスを追加します。

const $cards = $('.product-card');
$('#select-recommended').on('click', function () {
$cards.removeClass('is-selected');
const $recommended = $('.product-card[data-status="recommended"]');
$recommended.addClass('is-selected');
$('#result').text(`${$recommended.length}件のおすすめを選択しました`);
});
$('#reset').on('click', function () {
$cards.removeClass('is-selected');
$('#result').text('選択をリセットしました');
});$recommended.lengthには、一致した要素数が入ります。この例ではおすすめが2件あるため、「2件のおすすめを選択しました」と表示されます。
クリックした要素だけを選ぶthis
一覧の中で「クリックされたカードだけ」を操作したいときはthisを使います。下の画像では、中央のカードをクリックしたため、その1枚だけが選択されています。

$cards.on('click', function () {
$(this).toggleClass('is-selected');
const itemName = $(this).find('strong').text();
$('#result').text(itemName + 'を切り替えました');
});thisはイベントが発生したHTML要素を表します。文字列ではないため、$(this)のthisをクォーテーションで囲まないことがポイントです。
あとから追加される要素を操作する
ページ表示後にAjaxなどで追加される要素は、追加前の時点で$('.item').on(...)を実行してもイベントが付きません。親要素へイベントを設定し、第2引数へ子要素のセレクタを渡します。
$('.product-list').on('click', '.product-card', function () {
$(this).toggleClass('is-selected');
});この書き方をイベントデリゲーションと呼びます。ページ全体のdocumentへ付けることもできますが、上の例のように変更されない近い親要素を指定すると、影響範囲を小さくできます。
セレクタが動かないときの確認項目
- classの前の
.、idの前の#を付けているか - HTML側とjQuery側で大文字・小文字やハイフンが一致しているか
- セレクタ全体を同じ種類のクォーテーションで囲んでいるか
- jQuery本体を
script.jsより先に読み込んでいるか - HTMLの読み込み後に処理を実行しているか
- 動的に追加された要素ならイベントデリゲーションが必要ではないか
選択件数をコンソールで確認する
見た目だけでは原因が分からないときは、ブラウザの開発者ツールで選択件数を確認します。0ならセレクタがHTMLと一致していません。
const $targets = $('.product-card');
console.log($targets.length);期待が3件ならコンソールに3と表示されます。件数が多すぎる場合は、親要素や属性を追加して範囲を絞ってください。
実制作で読みやすいセレクタにするコツ
- 見た目だけに依存する長いセレクタを避ける
- JavaScript用のclassには
js-など役割が分かる名前を付ける - 同じ要素を何度も使う場合は変数へ保存する
$('*')のようにページ全体を選ぶ指定は必要な場面だけにする- クリックできるUIにはbuttonやaなど意味の合うHTML要素を使う
const $productList = $('.js-product-list');
const $cards = $productList.find('[data-role="product-card"]');
$cards.addClass('is-ready');短さだけを優先せず、「何を選んでいるか」が後から読んでも分かる名前にすると、修正しやすいコードになります。
関連するjQueryの使い方
セレクタで対象を選べたら、クリック処理やclassの追加へ進むと理解がつながります。次の記事では、それぞれを実例付きで解説しています。
まとめ
jQueryのセレクタは、処理を適用するHTML要素を選ぶための書き方です。まず$('タグ')、$('.class')、$('#id')を覚え、親子関係や属性で必要な範囲まで絞り込みましょう。
クリックされた要素だけなら$(this)、最初や何番目かなら.first()や.eq()を使えます。動かないときは選択件数を確認すると、セレクタの間違いを見つけやすくなります。
