MTAppSetLabel
[セレクタ, 旧テキスト, 新テキスト] の配列で、ページ内の要素テキスト(ラベル等)をまとめて書き換える。MTAppGetLabel の出力を編集して使う。
現在のページにある要素のテキスト(ラベルなど)をまとめて書き換える静的メソッドです。[セレクタ, 旧テキスト, 新テキスト] の配列を渡すと、各セレクタの要素配下のテキストノードを再帰的に走査し、旧テキストを新テキストに置換します。MTAppGetLabel で生成した配列表記を編集して渡す使い方が基本です。
構文
$.MTAppSetLabel(array);静的メソッド($.MTAppSetLabel)です。
パラメータ
| 引数 | 型 | 説明 |
|---|---|---|
array | Array | 書き換え定義の配列。各要素は [セレクタ, 旧テキスト, 新テキスト] の3要素配列 |
戻り値
なし(undefined)。
使用例
$.MTAppSetLabel([
['#title-label', 'タイトル', '記事名'],
['#customfield_note-field label', 'メモ', '備考']
]);MTAppGetLabel の出力(["#title-label", "タイトル", "タイトル"] など)をコピーし、3番目の要素を変更後のラベルに書き換えて渡すと効率的です。
user.js での記述例
user.js(「デザイン → user.js を編集」)に書く場合は、mtappVars.screen_id で画面を判定して呼び出します。
(function ($) {
if (typeof mtappVars !== 'object') return;
if (mtappVars.screen_id === 'edit-entry') {
$.MTAppSetLabel([
['#title-label', 'タイトル', '記事名'],
['#customfield_note-field label', 'メモ', '備考']
]);
}
})(jQuery);補足
- 各定義について、セレクタで最初に一致した要素の配下のテキストノードを再帰的に置換します。要素ノードは再帰、テキストノードは旧→新に置換します。
- セレクタが何にも一致しない場合、その定義は飛ばして次へ進みます(1つの誤ったセレクタで全体が止まることはありません)。
- セレクタが
#title-labelの場合は、タイトル入力欄(#title)の placeholder も新テキストに更新します。 - 置換はテキストノード単位の文字列置換です(HTML としては解釈されません)。1つのテキストノード内に旧テキストが複数回現れる場合、置換されるのは最初の1か所です。
MTAppCustomize との違い
ラベルの変更は MTAppCustomize でもできますが、性格が異なります。
- MTAppSetLabel:
[セレクタ, 旧テキスト, 新テキスト]の配列で複数のラベルを一括置換します。任意のセレクタ(フィールドのラベルに限らずテーブル見出しなども)を対象にでき、テキストノードの旧→新を部分置換するため、ラベル内の必須マークやアイコンなどの子要素は残ります。 - MTAppCustomize: フィールド単位(
basename)の総合カスタマイザで、ラベル変更はその一機能です。ラベルは.text()で要素の中身を丸ごと置換するため、子要素があると一緒に消えます。一方でクラス追加・表示制御・ヒント・折りたたみなども併せて行えます。
複数ラベルのテキストだけを手早く改名するなら本メソッド、1フィールドをスタイルやヒント込みで整えるなら MTAppCustomize が向いています。
関連
MTAppGetLabel— 本メソッドに渡す[セレクタ, ラベル, ラベル]配列を生成する開発支援。MTAppCustomize— ラベル変更を含むフィールドの総合的なカスタマイズ(特定フィールド向け)。