質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

11666閲覧

<label>で囲まれた<input>のテキストの変更方法を教えてください。

fjaiofjawiefjaw

総合スコア210

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2016/11/29 16:33

下記のように<label>で囲まれた<input>のテキストを変更するには、どうすれば宜しいでしょうか?

例えば、"Option 1"を"hoge"にするには、どうすれば良いでしょうか?

html

1<div class="radio"> 2 <label for="opt_1"><input type="radio" name="optradio" id="opt_1">Option 1</label> 3</div>

自分がやってみて、駄目だった例です。

javascript

1$("label[for='opt_1']").find("input").text("hoge");

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

「Option 1」のテキストはinput要素の子ではなく、どちらもlabel要素の子として、input要素と同じ階層にあります。ですから、「input要素の$.text」と書いてもアクセスすることはできません。

$.contentsであれば、テキストも1つとしてカウントされますので、これを使うのが良いかと思います。

ただし、この場合テキストの部分は$.textではアクセスできません。$.textは「$のテキスト」へアクセスするためのものですが、今回は「テキストのテキスト」ではなく、テキスト自身が対象だからです。

JavaScript

1$("label").contents().last().replaceWith("hoge");

なので、新しいテキストでそっくり置き換えてしまう、という方法もアリかなと思います。

投稿2016/11/29 17:10

sii_side

総合スコア849

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fjaiofjawiefjaw

2016/11/29 17:32

すみません。自身の実力不足で、現時点で回答の解説を100%理解できません。 しかし、概略は理解出来たような気がします。 サンプルで書いていただいたコードは、今後のために大変参考になりました。 ありがとうございます。
guest

0

ベストアンサー

labelで囲まれたinput内のテキストをspanタグとかで囲ってできるのではないでしょうか。

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>タイトル</title> 6</head> 7<body> 8<form> 9 <label for="text1"> 10 <input name="text1" id="text1" type="text"> 11 <span id="labelText">labelのテキスト</span> 12 </label> 13 <input type="button" class="button"> 14</form> 15<script src="https://code.jquery.com/jquery-3.1.1.js"></script> 16<script> 17 $('.button').click(function () { 18 $("#labelText").text("テスト"); 19 }) 20</script> 21</body> 22</html>

投稿2016/11/29 17:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fjaiofjawiefjaw

2016/11/29 17:40

回答頂いた解決方法は、思いつきませんでした。 どうもありがとうございます。
guest

0

こんな感じとかどうでしょう。

JavaScript

1$(_=> { 2 let textNode = $( "label[for='opt_1']" ) 3 .contents() 4 .filter( function() { 5 return this.nodeType === 3; 6 } ); 7 textNode[ 0 ].nodeValue = 'hoge'; 8 console.log( textNode ); 9} ); 10```**動くサンプル:**[https://jsfiddle.net/dLdwcb6g/](https://jsfiddle.net/dLdwcb6g/) 11 12--- 13 14.contents() | jQuery API Documentation】 15[https://api.jquery.com/contents/](https://api.jquery.com/contents/) 16 17[jQuery]タグのnodeTypeで比較可能な値とその意味の一覧】 18[http://nanoappli.com/blog/archives/4649](http://nanoappli.com/blog/archives/4649) 19 20【JQueryでテキストノードの値を置き換える | IT-Gate】 21[http://blog.felt-life.info/it-gate/2013/09/22/jquery-replace-textnod/](http://blog.felt-life.info/it-gate/2013/09/22/jquery-replace-textnod/) 22 23【contents() サンプル - jQuery 日本語リファレンス】 24[http://semooh.jp/jquery/api/traversing/contents/_/src-1/](http://semooh.jp/jquery/api/traversing/contents/_/src-1/)

投稿2016/11/29 17:01

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fjaiofjawiefjaw

2016/11/29 17:37

恥かしながら、nodeTypeというものがあることを初めて知りました。 また、サンプルコード、自身では書いたことがないレベルのもので、大変参考になります。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問