コンテンツにスキップ

071. afterend(直後に挿入:ターゲットの「外」のすぐ下に配置する)

原理:「となり」の次に居場所を作る

自分を壊さず、後ろに仲間を増やす

「afterend(アフター・エンド)」は、ターゲットとなる要素を基準にして、その「直後(外側のすぐ下)」に新しいHTMLを配置する方法です。

第4章の序盤で学んだ beforebegin(直前)と対になる機能で、今あるものを動かしたり消したりせずに、そのすぐ後ろに情報を置きたいときに威力を発揮します。


実践:さりげなく情報を「付け足す」

1. ボタンを押したあとにメッセージを出す

ボタン自体は消さずに、そのすぐ下に「保存しました」などの通知を一時的に出したい時の例です。

<!-- 
  hx-target: this (自分自身)
  hx-swap: afterend (自分の「外」のすぐ下に足す)
-->
<button hx-post="/api/save" 
        hx-target="this" 
        hx-swap="afterend">
    保存する
</button>

<!-- ボタンを押すと、ここに <div>保存しました</div> が出現します -->

2. フォームの入力欄を動的に増やす

「項目を追加」ボタンを押したときに、そのボタンの直前に新しい入力フィールドをどんどん増やしていくようなUIに最適です。

<div id="field-marker"></div> <!-- ここを基準点にする -->

<button hx-get="/api/new-field" 
        hx-target="#field-marker" 
        hx-swap="afterend">
    入力欄を追加
</button>

3. ステップ・バイ・ステップ解説

  1. 目印(基準点)を決める: 「どこの後ろに置きたいか」を決めてIDや this を使います。
  2. 挿入モードの指定: hx-swap="afterend" を指定します。
  3. サーバーの応答: サーバーは、新しく追加したいタグ(例:<span>チェック完了</span>)を返します。

比較:beforeend vs afterend(内の最後か、外の次か)

beforeend(内の最後)

  • イメージ: 封筒の中に、最後の一枚を入れる。
  • 構造: <div> ここに挿入される </div>

afterend(外の次)

  • イメージ: 封筒の「隣」に、新しい封筒を置く。
  • 構造: <div> ターゲット </div> ここに出る

まとめ:初心者のための「隣接」のデザイン

afterend は、今の画面の流れを断ち切ることなく、新しい情報を「自然な続き」として見せるための優れた手段です。

  • 基準点を「不動」にする: 挿入されたあとも基準点が残っているため、同じボタンで何度でも「その次」に要素を足し続けることができます。
  • HTML構造のチェック: beforebegin と同様、afterend もターゲットの「外」に置くものです。リストの <li> を増やしたい場合は、その「親」である <ul> に対して beforeend を使う方が、HTMLとして正しい構造になりやすいです。
  • 一時的な情報の表示に: 計算結果をちょっと出したり、ヘルプテキストを表示したり。そんな「脇役」の登場に最適な属性です。

今あるものの、すぐ隣へ。afterend を使って、画面が生き物のように成長していく、ダイナミックなUIを実現してください。次の記事では、ターゲットを綺麗に消滅させる「delete」(072. delete)をご紹介します。