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

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

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

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

Q&A

解決済

3回答

190閲覧

要素そのものを書き換える方法。

tkshp

総合スコア174

jQuery

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

1グッド

0クリップ

投稿2019/02/21 07:34

編集2019/02/21 08:17

前提・実現したいこと

下記のように書き換えたいのですが、removeとかしなければならないのでしょうか?
「取り除いて、追加して」という処理ではなく、そのものを変更する方法はありませんか?

・書き換え前。

html

1<div id="test1"> 2 <div id="test2">テスト2</div> 3 <div id="test3">テスト3</div> 4</div>

・書き換え後。

html

1<div id="test1"> 2 <div id="test4">テスト4</div> <!-- ←ここだけ交換 --> 3 <div id="test3">テスト3</div> 4</div>

試したこと

jQuery

1$(function() { 2 $('#test1>#test2').html('<div id ="test4">テスト4<</div>'); 3});

こうすると、中のものが書き換わってしまいます。

・実行結果。

<div id="test1"> <div id="test2"><div id="test4">テスト4<</div></div> <div id="test3">テスト3</div> </div>

続いて、

jQuery

1$(function() { 2 $('#test1').html('<div id ="test4">テスト4</div>'); 3});

こうすると、丸ごと書き換わってしまいます。

・実行結果。

<div id="test1"> <div id="test4">テスト4<</div> </div>

追記

すみません、最初の質問内容で書き換えるテキストが「テスト4」だったり、「書き換え」だったりして、統一してなかったので、
編集しなおしました。

afistrea👍を押しています

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

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

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

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

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

m.ts10806

2019/02/21 07:40

回答はしたものの、大目的部分が分からないので的確な回答になっているか分かりません。実際は何をどうしたいのでしょうか。
guest

回答3

0

jQuery

1$('#test2').text('テスト4').attr('id','test4');

これでいい様な気がするのですが・・・

投稿2019/02/21 07:39

SakuBlade

総合スコア375

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

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

SakuBlade

2019/02/21 07:41

変えるテキストは「テスト4」では無く「書き換え」ですね
m.ts10806

2019/02/21 07:45

最初の「書き換え後」が「テスト4」なので間違ってないと思います。
tkshp

2019/02/21 08:21

ご回答ありがとうございます。 メソッドチェーンの書き方が勉強になりました。 ありがとうございました。
guest

0

js

1$(function() { 2 $('#test2').attr('id','test4'); 3 $('#test2').html('書き換え'); 4});

※ちなみにidは画面内1つがルールなので"#test1>#test2"のように指定するのはほとんど意味がありません。

あとは、
例えば、#test1の子要素を配列で取得し、指定した行番号のときだけ任意の要素を入れて、そこの要素を削除するとか。

js

1const change_index = 0; 2const change_elem = $('<div></div>',{'id':'test4',text:'テスト4'}); 3$(function() { 4 $('#test1').children('div').each(function(index, element){ 5 if(index == change_index){ 6 $('#test1').prepend(change_elem); 7 $(this).remove(); 8 } 9 }) 10});

投稿2019/02/21 07:39

編集2019/02/21 07:53
m.ts10806

総合スコア80850

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

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

tkshp

2019/02/21 08:21

ご回答ありがとうございます。 質問の意図としては、removeとか以外の方法で、htmlメソッドを使って、要素そのものを書き換えることが可能かどうかを知りたかったです。 htmlメソッドだけで変える方法はないということがわかりました。 ありがとうございました。 また、 $('<div></div>',{'id':'test4',text:'テスト4'}); というハッシュでの書き方が勉強になりました。
m.ts10806

2019/02/21 08:22

解決されたようで何よりです。 HTMLは指定要素の中に書き込むだけなので、それだけでは難しいです。 中の要素を取り出してどうにかするか、直接中の要素を書き換えるしかありません。
tkshp

2019/02/21 08:29

ご回答ありがとうございます。 勉強になりました。 ありがとうございます。
tkshp

2019/02/21 10:00

すみません、意図したいことに、より近い回答をいただきましたので、ベストアンサーを移させていただきます。
guest

0

ベストアンサー

すでに終わっているものの、直感的にはこちらをしたかったのではないかと思うので残しておきます。

jQuery

1$('#test2').replaceWith('<div id="test4">テスト4</div>');

https://api.jquery.com/replaceWith/

投稿2019/02/21 09:22

x_x

総合スコア13749

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

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

tkshp

2019/02/21 10:02 編集

ご回答ありがとうございます。 replaceWithメソッドというものがあるのですね、試して確認しました。 意図したかったことです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問