-
ID:MKAVH5 さんの質問

jQueryでテキストエリア内の特定コードを取得する方法を教えてください。
以下のようなHTMLがあったとして、
<textarea id="test">
<input name="aaa" id="aaa">
<input name="bbb" id="bbb">
</textarea>
「<input name="aaa" id="aaa">」の部分だけ取得したいです。

みんなの回答 4 件

ID:nMgKOQ さんの回答

var value = $( ’#aaa’ ).val();
以上です

ID:nMgKOQ

$( ’input[name=aaa]’ ).val()
でもいいけど、たぶんidの方が速い。(体感するほどじゃないけど)

ID:MKAVH5

どっちも試しましたが、undefinedになります。
テキストエリア内のHTMLの場合、通常のjQueryの書き方では駄目ではないでしょうか?

ID:wD086d

そもそもテキストエリアの外だったとしても書き方間違ってるけどな。

ID:nMgKOQ

よく見たら、テキストエリアに入ってたのか。
いまさらだけど、val() じゃなくて html 自体を取り出したいの?
<input name="aaa" id="aaa">

ID:HmGGuN さんの回答

そもそも <textarea> 内に <input> は書けない(文法違反)。

ID:wD086d さんの回答

$(’<p>’ + $(’#test’).val() + ’</p>’).find(’#aaa’).prop(’outerHTML’)
で、いけんじゃね。

ID:MKAVH5

var test = $($(’#test’).val()).find(’#aaa’).prop(’outerHTML’);
var test = $($(’#test’).val()).find(’#aaa’).outerHTML;
alert(test);
.
どっちもundefinedになります。

ID:wD086d

元コメのようにpでもdivでもいいけどなんかタグで囲ってjQueryに食わせてみ。
なんかもっといい書き方ありそうな気もするっちゃするけど。

ID:MKAVH5

出来ました!なぜ囲う必要があるんですかね?理由がわからないのでちょっとモヤモヤ。

ID:wD086d

俺ももやもやしてるしその辺ちゃんと仕様読んだわけじゃないけど、
たぶんfindが最上位の階層だとセレクトできないんでしょう。

ID:wD086d

あぁ、findじゃなくて、
$($(’#test’).val()).siblings(’#aaa’).prop(’outerHTML’)
で、いいんだわ。

ID:MKAVH5

siblingsで出来ました!リファレンスも見ましたが、便利な関数があったんですね!。最終的にはテキストエリア内の特定コードを取得して変更したかったのですが、以下の様な感じで出来そうです。ありがとうございました!
.
var test = $(’#test’).html();
var str = $($(’#test’).val()).siblings(’#aaa’).prop(’outerHTML’);
var result = test.replace(str, ’<input name="bbb" id="bbb">’);
alert(result);

ID:BZ/44f さんの回答

なぜ抽出条件を言わないか謎。何でもよければなんだってできる。
alert($("#test").val().split("\n")[0]);

最終更新日:2014-11-26 (2,844 views)

関連するトピックス

ページ上部に戻る