読み込み中...

HTMLとツリー構造・jQuery追加をマスターする!初心者からプロまでわかる7つの完全ガイド

HTMLにjQueryを追加するイメージ HTML
この記事は約30分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

HTMLで作った静的ページにjQueryを組み合わせると、クリック、入力、絞り込み、表示切り替えなどの動きを短い記述で追加できます。既存サイトでは、必要な箇所だけjQueryで補うほうが扱いやすい場面があります。

HTML構造が曖昧なままjQueryだけを足すと、セレクタの誤り、イベント重複、表示崩れが起きやすくなるのが基本です。要素の役割をHTMLで整理し、使い方を小さなサンプルコードで確認します。

HTMLの基本構造、jQueryによるDOM操作、データの追加、対処法、カスタマイズの注意点、応用例までを扱います。

動作確認環境

  • HTML Living Standard / CSS Media Queries Level 4
  • jQuery 4.0.0 / jQuery 3.7.1系の既存環境にも配慮
  • Google Chrome 126以降、Firefox 127以降、Safari 17以降を想定
📖 この記事で学べること

  • HTML文書の基本構造とjQueryを読み込む位置
  • セレクタ、イベント、DOM更新の使い方
  • リストやフォームにデータを追加するサンプルコード
  • エラー処理、デバッグ、対処法の考え方
  • タブ、フィルター、アニメーション、プラグインの応用例

HTMLとjQueryの基本

HTMLはページの意味と構造を表し、jQueryはその構造をJavaScriptから操作するライブラリです。MDNのHTML解説でも、HTMLはWebコンテンツの意味と構造を定義する技術として扱われています。

jQueryの追加より先に、<h1><p><button><form><ul>などの役割を決めます。HTMLの骨格が整理されているほど、$()で対象を選ぶ処理も読みやすくなるのが目安です。

項目 主な役割 よく使う記述 注意点 関連する使い方
HTML構造 見出し、本文、入力欄を配置 <body><section> 意味のない入れ子を増やさない DOM操作の土台
jQuery読み込み ライブラリを利用可能にする <script src> 自作コードより先に読む イベント追加
セレクタ 操作対象を選ぶ $('#id')$('.class') ID重複を避ける 表示変更
テキスト更新 文字列を差し替える .text() HTML文字列を解釈しない 安全な表示更新
HTML挿入 要素を追加する .append() 入力値の扱いに注意する リスト更新
イベント クリックや送信に反応 .on() 重複登録を避ける UI操作
フォーム ユーザー入力を受け取る .val() 空文字と不正値を確認する データ追加
CSS連携 表示状態を切り替える .addClass().removeClass() style直書きを増やしすぎない カスタマイズ
デバッグ 原因を絞る console.log() 公開前に不要なログを整理する 対処法の確認
プラグイン 既成UIを導入 .slick() 更新状況と依存関係を見る 応用例

HTMLの役割を整理する

HTML文書は<!DOCTYPE html>で文書モードを示し、<html>の中に<head><body>を置きます。<head>には<meta charset><title>、外部CSSやスクリプト、<body>には読者が見る内容を配置します。

構造崩れ、ID重複、閉じタグ不足、読み込み順の混乱があると、jQueryで#example.itemを選んでも期待どおりに動かないことがあるのがポイントです。

HTML要素と属性の一覧は、MDNのHTML referenceで確認できます。タグ名の暗記より、HTML要素の意味を調べながら使うほうが正確です。

jQueryの基本と現在の位置づけ

jQueryは$(selector)で要素を選び、.text().hide().show().append()などをつなげて操作します。公式のjQuery API Documentationには、DOM操作、イベント、Ajax、エフェクトの各メソッドが分類されているのが一般的です。

環境設定:HTMLとjQueryのセットアップ方法

HTMLにjQueryを追加するには、CDNの<script>を読み込み、その後に自作スクリプトを書きます。jQuery本体の後に$('p').text()を実行する順番を守ります。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>サンプルページ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <h1>こんにちは、世界!</h1>
    <p>これはjQueryテストです。</p>
    <script>
        $('p').text('jQueryによるテキスト変更!');
    </script>
</body>
</html>

結果: 期待される表示は、段落の文字が「jQueryによるテキスト変更!」へ差し替わる状態です。

基本的なHTMLタグとjQueryの使い方

HTMLタグは文章の意味を決め、jQueryはそのタグを選択して内容や見た目を変えます。正しいHTMLを用意し、対象を絞り、イベントやメソッドで変化を追加する流れが基本です。

<h1><p><button><input>の関係を整理します。ページ内移動の基本はHTMLでアンカーリンクを活用する方法10選も参考になるのが現実的です。

サンプルコード1:HTMLで基本的なページを作成する方法

基本ページでは、文書型、言語、文字コード、タイトル、本文領域を順に書きます。jQueryを追加する前に、HTMLだけで正しく表示されるか確認します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>サンプルページ</title>
</head>
<body>
    <h1>HTMLの基本</h1>
    <p>これはパラグラフです。</p>
</body>
</html>

結果: 期待される表示は、「HTMLの基本」という見出しと「これはパラグラフです。」という段落が並ぶページです。

サンプルコード2:jQueryを使ってDOMを操作する基本

DOM操作では、HTML要素をブラウザ内のオブジェクトとして扱いると整理できます。jQueryは$(document).ready()$()を使い、読み込み後の要素へ処理を追加できます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>jQueryのデモ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <h1>jQueryの基本</h1>
    <p id="example">これは例です。</p>
    <script>
        $(document).ready(function() {
            $('#example').text('テキストがjQueryによって変更されました。');
        });
    </script>
</body>
</html>

結果: 期待される表示は、id="example"を持つ段落の内容が「テキストがjQueryによって変更されました。」へ変わる状態です。

#exampleはIDセレクタ、.text()はテキスト差し替えです。ユーザー入力の表示では、HTML文字列を挿入する.html()より.text()が安全側です。

サンプルコード3:イベントハンドラの追加と反応のカスタマイズ

クリックや入力に反応するUIでは、イベントハンドラを追加します。jQueryの.on('click')で、ボタン操作と表示変更を結び付けます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>イベントハンドリング</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <button id="changeText">テキストを変更</button>
    <p id="text">クリック前のテキストです。</p>
    <script>
        $('#changeText').on('click', function() {
            $('#text').text('ボタンがクリックされ、テキストが変更されました!');
        });
    </script>
</body>
</html>

結果: 期待される表示は、ボタンを押した後に段落の文言が「ボタンがクリックされ、テキストが変更されました!」へ変わる状態です。

#changeTextのクリックで#textを更新します。カスタマイズでは、.addClass()で見た目を切り替える方法も選べます。

jQueryでデータを動的に追加する方法

データを動的に追加する処理では、入力値の取得、空欄チェック、DOMへの挿入、入力欄の初期化をまとめて考えますし、ここがポイントです。.val().append().empty().remove()がよく使われます。

ユーザー入力をそのままHTMLとして挿入すると、意図しないタグが解釈されるおそれがあります。入力値は$('<li>')で要素を作り、.text()で入れる対処法が扱いやすいです。

入力から画面を更新する設計は、HTMLとJSを使ってカレンダーを作成・更新する方法10選にも通じますが、これは押さえたい点です。HTMLの入力欄とjQueryのイベント処理を分けると、応用例を増やしやすくなります。

⚠️ 注意: .append()はHTML文字列も受け取れますが、外部入力をそのまま渡す設計は避けます。公式の.append() APIでも挿入対象の種類が示されているため、用途に合わせて値の扱いを確認すると理解できます。

サンプルコード4:リストに項目を動的に追加する

リスト追加は、買い物メモ、タスク管理、タグ入力などで使われます。次のサンプルコードでは、空欄でない文字列だけを<li>として追加します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>リスト追加デモ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <input type="text" id="newItem">
    <button id="addItem">アイテム追加</button>
    <ul id="itemList">
        <li>初期アイテム</li>
    </ul>
    <script>
        $(document).ready(function() {
            $('#addItem').on('click', function() {
                var itemText = $('#newItem').val();
                if (itemText !== '') {
                    $('#itemList').append($('<li>').text(itemText));
                    $('#newItem').val('');
                }
            });
        });
    </script>
</body>
</html>

結果: 期待される表示は、入力欄に文字を入れてボタンを押すたびに、#itemListの末尾へ新しい項目が追加される状態です。

.val()で入力値を取り出し、$('<li>').text()で文字を入れます。文字列連結よりHTMLとして解釈される範囲を抑えられる点が注意点です。

サンプルコード5:フォームからデータを受け取り、ページに表示する

フォーム送信をページ内で処理すると、リロードを挟まずに結果を表示できます。event.preventDefault()で標準送信を止め、入力内容を#resultへ反映すると覚えるとよいでしょう。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>フォームデータ表示デモ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <form id="userForm">
        <label for="username">名前:</label>
        <input type="text" id="username" name="username">
        <input type="submit" value="送信">
    </form>
    <div id="result"></div>
    <script>
        $(document).ready(function() {
            $('#userForm').on('submit', function(event) {
                event.preventDefault();
                var name = $('#username').val();
                $('#result').text('こんにちは、' + name + 'さん!');
            });
        });
    </script>
</body>
</html>

結果: 期待される表示は、名前を入力して送信すると#resultに「こんにちは、入力名さん!」という文が出る状態です。

実運用では空欄、文字数、許可しない文字の確認も加えます。問い合わせフォーム全体の設計はHTMLで問い合わせフォームを作成する方法5選!と合わせて確認できます。

エラー処理とデバッグ

jQueryが動かない原因は、読み込み、セレクタ、実行タイミング、イベント登録、入力値に分かれますし、これが一つの目安です。対処法を知ると確認箇所を絞れます。

開発者ツールでConsoleElementsSourcesを確認します。Uncaught ReferenceErrorなら変数名や読み込み順、TypeErrorなら対象や戻り値を疑いると考えられます。

一般的なエラーとその対処法

$ is not defined、ID名の打ち間違い、.on()の対象不足、動的に追加した要素へのイベント未設定が代表例です。$ is not definedはjQuery本体より先に自作スクリプトが動いたときに発生しやすい症状です。

対処法は、<script src="jquery...">を自作コードより前に置き、必要に応じてdeferや読み込み順を見直すことです。IDの打ち間違いはdocument.querySelector()やElementsパネルでも確認できます。

追加したボタンへイベントが効かない場合は、親要素に.on('click', '.child', handler)を設定するイベント委譲が候補です。追加後の要素にも反応するため、リストやテーブルのカスタマイズに応用できます。

jQueryのデバッグテクニック

console.log()で値を確認し、必要に応じてブレークポイントで処理を止めますが、覚えておくと役立つでしょう。console.table()console.warn()console.error()を使い分けると確認しやすくなります。

try {
    var target = $('#missingElement');
    if (target.length === 0) {
        throw new Error('対象の要素が見つかりません。');
    }
    target.hide();
} catch (error) {
    console.error('発生したエラー:', error.message);
}

結果: 期待される出力は、対象要素がない場合にコンソールへ「発生したエラー: 対象の要素が見つかりません。」という警告相当の情報が出る状態です。

存在しない要素を操作する前に.lengthを確認しています。jQueryオブジェクトは対象がなくても空で返るため、処理前の存在確認が対処法として有効です。

jQueryを使った応用プロジェクト

応用例では、単独のDOM操作を組み合わせてタブ切り替えやコンテンツフィルタリングを作りますし、ここを基本と考えるとよいでしょう。HTMLに状態を表すclassdata-*属性を置き、jQueryで表示対象を切り替える設計が扱いやすいです。

見た目の切り替えはCSSへ寄せ、jQueryは.addClass().removeClass()で状態だけを変えます。HTML、CSS、jQueryの責務が分かれるため、カスタマイズ範囲を限定できます。

サンプルコード6:タブ切り替え機能の作成

タブUIでは、押されたボタンに対応するパネルだけを表示すると言えるでしょう。data-targetに表示対象のIDを入れると、HTML側の関係が読み取りやすくなります。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>タブ切り替えデモ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    <style>
        .tab-content { display: none; }
        .tab-content.active { display: block; }
        .tab.active { font-weight: bold; }
    </style>
</head>
<body>
    <div class="tabs">
        <button class="tab active" data-target="#tab1">タブ1</button>
        <button class="tab" data-target="#tab2">タブ2</button>
    </div>
    <div id="tab1" class="tab-content active">
        <p>これはタブ1の内容です。</p>
    </div>
    <div id="tab2" class="tab-content">
        <p>これはタブ2の内容です。</p>
    </div>
    <script>
        $(document).ready(function() {
            $('.tab').on('click', function() {
                $('.tab-content').removeClass('active');
                $('.tab').removeClass('active');
                $(this).addClass('active');
                $($(this).data('target')).addClass('active');
            });
        });
    </script>
</body>
</html>

結果: 期待される表示は、タブボタンを押すたびに対応する本文だけが表示され、選択中のタブが太字になる状態です。

activeクラスで状態を表すため、デザイン変更はCSS側で扱えます。HTMLとjQueryの対応も追いやすい応用例です。

サンプルコード7:動的なコンテンツフィルタリング

フィルタリングは、一覧から条件に合う要素だけを残すUIです。検索文字列を小文字化し、各<li>のテキストと比較します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>コンテンツフィルタリングデモ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <input type="text" id="filterInput" placeholder="キーワード">
    <ul id="dataList">
        <li>アイテム1</li>
        <li>アイテム2</li>
        <li>アイテム3</li>
    </ul>
    <script>
        $(document).ready(function() {
            $('#filterInput').on('keyup', function() {
                var value = $(this).val().toLowerCase();
                $('#dataList li').filter(function() {
                    $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
                });
            });
        });
    </script>
</body>
</html>

結果: 期待される表示は、入力欄の文字列を含むリスト項目だけが残り、含まない項目が非表示になる状態です。

.filter()で各要素を処理し、.toggle()で表示状態を切り替えます。大量データでは件数や検索頻度を見て対処法を考えます。

ユーザーインターフェースの改善技術

UI改善では、操作できる箇所と操作後の変化を分かりやすくするのが基本です。jQueryでアニメーションを追加する場合も、状態変化を伝える役割に絞ると自然です。

fadeInslideToggleの演出は、通知、詳細表示、メニュー開閉など意味のある箇所に絞ります。動きが多すぎる画面は読みにくくなります。

スライドショーや視覚的な切り替えは、HTMLとCSSで手軽に作るスライドショーコピペ12選も関連するのが目安です。jQueryを使う前にCSSだけで足りるか確認すると、依存関係を減らせます。

サンプルコード8:アニメーションとエフェクトの追加

フェードインは、非表示だった要素を段階的に見せる処理です。jQueryでは.fadeIn()'slow'やミリ秒を渡して、表示速度を調整できます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>アニメーションデモ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <button id="fadeInButton">表示</button>
    <div id="content" style="display:none;">
        <p>ここにテキストが表示されます!</p>
    </div>
    <script>
        $(document).ready(function() {
            $('#fadeInButton').on('click', function() {
                $('#content').fadeIn('slow');
            });
        });
    </script>
</body>
</html>

結果: 期待される表示は、ボタンを押すと非表示だった#contentがゆっくり現れる状態です。

style="display:none;"で隠し、クリック時に.fadeIn('slow')で表示します。アクセシビリティ面では、CSSのprefers-reduced-motionも検討します。

サンプルコード9:レスポンシブなナビゲーションバーの実装

レスポンシブ対応では、画面幅に応じてリンクの並び方や余白を変えますし、ここがポイントです。HTMLでナビゲーションのまとまりを用意し、CSSの@mediaで表示を切り替えます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>レスポンシブナビゲーションバー</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        .navbar {
            overflow: hidden;
            background-color: #333;
            position: relative;
        }
        .navbar a {
            float: left;
            display: block;
            color: #f2f2f2;
            text-align: center;
            padding: 14px 16px;
            text-decoration: none;
        }
        .navbar a:hover {
            background-color: #ddd;
            color: black;
        }
        @media screen and (max-width: 600px) {
            .navbar a {
                float: none;
                display: block;
                text-align: left;
            }
        }
    </style>
</head>
<body>
    <div class="navbar">
        <a href="#home">ホーム</a>
        <a href="#news">ニュース</a>
        <a href="#contact">お問い合わせ</a>
    </div>
</body>
</html>

結果: 期待される表示は、広い画面では横並びのリンク、小さい画面では縦並びのリンクになるナビゲーションです。

このHTMLとCSSはjQueryを使わない例です。必要なときだけjQueryを追加する判断が、保守しやすいカスタマイズにつながります。

ページ内に別文書を見せる構成は、HTMLにおけるフレームの使い方10選も関連します。現在は<iframe>の用途や制限、セキュリティ属性を確認するのがポイントです。

最新のjQueryプラグインとツール

jQueryプラグインは、スライダー、モーダル、日付選択、入力補助などを短時間で追加したいときに候補になります。公式サイトのダウンロードページではjQuery 4.0.0が最新安定版として案内されています。

jQueryプラグインの選び方

プラグイン選定では、最終更新日、GitHubのIssue、利用例、依存ファイル量、CSSの上書きしやすさを確認するのが一般的です。機能だけで選ぶと、あとからHTML構造を大きく変えることがあります。

aria-labelrole、キーボード操作、フォーカス管理を確認できるプラグインを選びます。見た目と操作が密接なスライダーやモーダルほど重要な注意点です。

サンプルコード10:slickで画像スライダーを追加する

slickは画像スライダーの例としてよく使われるjQueryプラグインです。導入時はjQuery本体、プラグインCSS、プラグインJSの読み込み順をそろえますが、これは押さえたい点です。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Image Slider Example</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css">
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script>
</head>
<body>
    <div class="slider">
        <div><img src="image1.jpg" alt="Image 1"></div>
        <div><img src="image2.jpg" alt="Image 2"></div>
        <div><img src="image3.jpg" alt="Image 3"></div>
    </div>

    <script>
        $(document).ready(function(){
            $('.slider').slick({
                infinite: true,
                slidesToShow: 3,
                slidesToScroll: 1
            });
        });
    </script>
</body>
</html>

結果: 期待される表示は、.slider内の画像が横並びのスライダーとして表示され、一定数ずつスクロールできる状態です。

slidesToShowslidesToScrollinfiniteで表示枚数、移動枚数、ループを変えます。画像のalt属性、読み込みサイズ、モバイル時の表示枚数はカスタマイズ時の注意点です。

開発効率を高めるツールとライブラリ

WebpackViteBabelESLintPrettierなどは、複数ファイルを管理する場面で整形や構文チェックに役立ちます。jQueryだけの小規模ページでは不要な場合もあるのが現実的です。

サンプルコード11:イベント委譲で追加要素にも反応させる

動的に追加した要素へ直接イベントを登録しても、生成前の要素には設定が届きません。親要素へイベントを置き、対象セレクタを第2引数に渡すと、あとから増えたボタンにも反応します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>イベント委譲デモ</title>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
</head>
<body>
    <button id="addButton">ボタンを追加</button>
    <div id="buttonArea"></div>
    <p id="message">未選択です。</p>
    <script>
        $(function() {
            $('#addButton').on('click', function() {
                $('#buttonArea').append($('<button class="dynamic-button">追加ボタン</button>'));
            });

            $('#buttonArea').on('click', '.dynamic-button', function() {
                $('#message').text('追加されたボタンがクリックされました。');
            });
        });
    </script>
</body>
</html>

結果: 期待される表示は、「ボタンを追加」で増えたボタンを押すと、メッセージが「追加されたボタンがクリックされました。」へ変わる状態です。

#buttonAreaが親としてクリックを受け、.dynamic-buttonに一致したときだけ処理します。リスト項目の削除、行の編集、タグの追加にも同じ考え方を使えます。

まとめ

HTMLとjQueryを組み合わせると、静的ページへテキスト変更、イベント処理、データの追加、タブ切り替え、フィルタリングを段階的に加えられますし、これが一つの目安です。最初にHTMLの構造を整え、jQueryのセレクタとメソッドで対象を小さく操作します。

サンプルコードでは、<script>の読み込み順、idclassの対応、.on()の対象、.append()で追加する値を確認します。エラー時はコンソール、要素、入力値、イベント登録の順に見ると対処法を絞れますが、覚えておくと役立つでしょう。

標準JavaScriptやCSSだけで足りる処理も多くあります。既存資産、運用体制、プラグイン対応、カスタマイズのしやすさを見ながら、HTML、CSS、jQueryの役割を分けて使います。


関連記事

著者: Japanシーモア編集部

Japanシーモアは、Web/IoT/APP/SYS 分野のプログラミング情報を体系的に提供するメディアです。本記事は編集部による執筆とAI支援を組み合わせて制作し、公開前に編集部が校正しています。誤りや改善案がございましたらお問い合わせよりご連絡ください。

※本記事は実在のエンジニア複数名で構成される Japanシーモア編集部が、AI支援を活用して作成・校正・公開しています。