ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
.find() の基本
jQuery .find() は、マッチした要素の子孫からセレクタに一致する要素を抽出します。直下の子のみではなく、孫・ひ孫まで深く探索します。
<div id="wrap">
<p>直下の段落</p>
<section>
<p>セクション内の段落</p>
<article>
<p>記事内の段落</p>
</article>
</section>
</div>// 子孫すべての p
$('#wrap').find('p').length; // → 3
// 直下の p のみ
$('#wrap').children('p').length; // → 1
// セレクタ必須 (省略すると空)
$('#wrap').find(); // → 空オブジェクト
.find() vs .children() vs .closest()
| メソッド | 方向 | 対象 | 用途例 |
|---|---|---|---|
.find(s) | 下向き | 子孫全要素 | 表内の全 input を集める |
.children(s) | 下向き | 直下の子のみ | リストの件数カウント |
.closest(s) | 上向き | 自身含む最も近い祖先 | クリックされた行の tr 特定 |
.parents(s) | 上向き | 祖先すべて | 祖先の form をすべて取る |
.siblings(s) | 横方向 | 兄弟要素 | 選択肢の他を非アクティブ化 |
複数セレクタとフィルタ
// カンマで複数指定
$('#form').find('input, select, textarea');
// 属性セレクタ
$('table').find('[data-id]');
// :checkbox / :radio / :hidden / :visible
$('form').find(':checkbox:checked');
// jQuery オブジェクトを引数に取れる
const $targets = $('.item');
$('#wrap').find($targets); // wrap 配下の .item
// DOM 要素も渡せる
$('#wrap').find(document.querySelector('.target'));
典型的なユースケース
1. テーブル全行の値を集計
const total = $('#cart').find('.price').toArray()
.map(el => parseInt($(el).text(), 10))
.reduce((a, b) => a + b, 0);
$('#total').text(total.toLocaleString());
2. 動的に挿入した要素にも対応
$('#chat').on('messageAdded', function() {
// 最新追加分を含めて取り直す
$(this).find('.message').addClass('animated fadeIn');
});
// イベント委譲 (find したのと同じ要素群に効く)
$('#chat').on('click', '.message', function() {
$(this).toggleClass('selected');
});
3. フォーム内の全入力値を取得
const $form = $('#myForm');
const data = {};
$form.find(':input').each(function() {
data[this.name] = $(this).val();
});
// または serializeArray
const data2 = $form.serializeArray();
生 DOM API での同等処理
const wrap = document.getElementById('wrap');
// 子孫全件 (find 相当)
wrap.querySelectorAll('p'); // 3 件
wrap.querySelectorAll('input, select');
// 1 件目だけ (find().first() 相当)
wrap.querySelector('.first-item');
// closest (祖先方向)
document.querySelector('.btn').closest('form');
// :scope で「自身から見て」を明示
wrap.querySelectorAll(':scope > p'); // 直下のみ
wrap.querySelectorAll(':scope > * > p'); // 孫のみ
// matches で自身がセレクタにマッチするか確認
wrap.matches('.parent'); // boolean
パフォーマンスと最適化
| パターン | 速度 | 備考 |
|---|---|---|
$("#a .b") | 速い | jQuery 内部で Sizzle / querySelectorAll |
$("#a").find(".b") | 同等〜速い | キャッシュ済の親があれば再利用しやすい |
$(".b", "#a") | 遅い | 古い書き方、内部で find に変換される |
el.querySelectorAll(".b") | 最速 | ネイティブ |
| 自前 for ループ | 最遅 | JS 側で再帰探索すると桁違いに遅い |
大量の DOM に対して何度も検索するなら、結果をキャッシュして再利用するのが基本です。
// ❌ 毎回探す
$('#tbl').find('tr').each(function() {
$('#tbl').find('tr').first().addClass('header'); // ループ内で再検索
});
// ✅ キャッシュ
const $rows = $('#tbl').find('tr');
$rows.first().addClass('header');
$rows.slice(1).addClass('body');
現代の DOM 選択 API
| jQuery | ネイティブ |
|---|---|
$(sel).find(s) | el.querySelectorAll(s) |
$(sel).children(s) | el.querySelectorAll(":scope > " + s) |
$(sel).closest(s) | el.closest(s) |
$(sel).parent() | el.parentElement |
$(sel).is(s) | el.matches(s) |
FAQ
Q: .find() は自身を含む?
A: 含みません。自身も対象にしたい場合は .find('selector').addBack() や .add('selector')。
Q: .find() で複数の結果が来たときに 1 件だけ欲しい
A: .first() / .eq(0) / .last() / .eq(-1) でフィルタ。
Q: ネイティブ querySelectorAll とどちらを使う?
A: 新規開発ならネイティブ推奨。jQuery 既存コードを保守するなら統一感のため .find() を使い続けます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- .find()
- .children()
- .eq()
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?