HOWTO · jQuery

jQuery でテキストを変更する方法

jQuery の text() メソッドを使用して、要素のテキストを読み取るか、新しいテキストに置き換えます。直接置き換えることも、クリックに応答して置き換えることもできます。

このページの内容

jQuery の text() メソッドを使うと、選択した要素内のテキストを読み取ったり、新しいテキストを設定したりできます。引数なしで .text() を呼び出すと読み取り、文字列を渡すと選択した要素のテキスト内容を置き換えます。

jQuery の text() メソッド

引数なしの .text() はゲッターで、一致した要素のテキスト内容をまとめて返します。たとえば、ページに <p id="line">It's a line.</p> がある場合、$('#line').text() は It's a line. を返します。この呼び出しは現在のテキストを読み取るもので、値を設定するものではありません。

値を渡すと、.text(value) はセッターになります。一致したすべての要素のテキスト内容を更新し、メソッドチェーンに使えるよう jQuery コレクションを返します。値はテキストとして扱われるため、<strong> のようなマークアップ文字列は HTML として解析されず、文字列のまま表示されます。マークアップを設定する場合に限り .html() を使い、信頼できない入力を安全に処理してください。

jQuery の text() メソッドでテキストを直接変更する

ブラウザー上のページでは、jQuery を読み込み、ドキュメントの準備ができてからセッターを実行します。次の Node の例では、ページと jQuery の選択処理を簡単な代替オブジェクトで再現しているため、同じ呼び出しを単独で実行できます。最初は「Text」を含む段落から始め、テキストを設定して結果の値を出力します。

const document = {};
const elements = { '#title': { text: 'Text' } };

function $(selector) {
  if (selector === document) {
    return { ready(callback) { callback(); } };
  }
  const element = elements[selector];
  return {
    text(value) {
      if (value === undefined) return element.text;
      element.text = value;
      return this;
    }
  };
}

$(document).ready(function() {
  $('#title').text('New Text');
});
console.log($('#title').text());
New Text

実際のページでは、<p id="title">Text</p> を用意し、準備完了コールバック内で同じセッター $('#title').text('New Text') を使います。コールバックが実行されると、段落には「New Text」と表示されます。Node の代替例はメソッドの呼び出し方を示すものです。ブラウザーで使うページでは jQuery を読み込む必要があります。

jQuery の text() メソッドでクリックイベント後にテキストを変更する

クリック後にテキストを更新するには、ボタンにハンドラーを登録し、その中で対象の段落に .text() を呼び出します。次の自己完結型の Node の例では、段落とボタンをモデル化し、登録したハンドラーを呼び出してクリック前後のテキストを示します。

const document = {};
const elements = {
  '#title': { text: 'Text' },
  '#press': {}
};
const handlers = {};

function $(selector) {
  if (selector === document) {
    return { ready(callback) { callback(); } };
  }
  const element = elements[selector];
  return {
    text(value) {
      if (value === undefined) return element.text;
      element.text = value;
      return this;
    },
    click(callback) {
      handlers[selector] = callback;
      return this;
    }
  };
}

$(document).ready(function() {
  $('#press').click(function() {
    $('#title').text('Text Altered');
  });
});

console.log($('#title').text());
handlers['#press']();
console.log($('#title').text());
Text
Text Altered

ブラウザーでは、<p id="title">Text</p> と <button id="press">Text Change</button> を用意し、スクリプトより先に jQuery を読み込んでからハンドラーを使います。段落には最初「Text」と表示され、ボタンをクリックすると「Text Altered」に変わります。ハンドラーが意図した段落を更新できるよう、セレクター内の ID をページ要素の ID と一致させてください。