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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1420閲覧

jQueryで、divをpに書き換えたいです

yayak

総合スコア66

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/12/11 12:11

クリックしたdiv要素を、p要素に書き換えたいです

div要素をクリックしたら、そのdiv要素のdata属性やclass、textなどはそのままに、「div」の部分を「p」に置き換えたいです。中のtextやclass、data属性の書き換え方法は調べるとたくさん見つかったのですが、divをpに変える方法がどうしても見つかりません。

書いたコード

//html <div data-sample="hoge" class="div-class">text</div> //jQuery $(document).on('click','.div-class',function(){ var i_am_div = $(this).clone(); //div要素をまるまるコピー。cloneが適切かわかっていません var i_am_p = i_am_div.replace('/div/u', 'p'); //正規表現で無理やりdivをpに書き換え $(this).after(i_am_p); //元のdiv要素のあとにpに変換したものを挿入 $(this).remove(); //元のdiv要素を削除=pに変換したものだけが残ることを期待 });

結果

期待していた結果は、以下の変化です。
クリック前:<div data-sample="hoge" class="div-class">text</div>
クリック後:<p data-sample="hoge" class="div-class">text</p>
しかし実際は、以下のエラーが返ってきました。
TypeError: i_am_div.replace is not a function at HTMLDivElement.

jQueryがまだよくわかっておらず、自身のコードのどこがいけないのか悩んでいます。

対象のdiv要素のdata属性やclass、textなどはそのままに、「div」の部分を「p」に置き換える方法をご存じの方がいらっしゃいましたら、どうかご教授いただけましたら幸甚に存じます。

何卒、よろしくお願い申し上げます。

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

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

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

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

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

guest

回答2

0

要素を置換するreplaceWith/replaceAllメソッドがあります。
jQuery 要素を置き換える(replaceWith/replaceAll)

投稿2021/12/11 12:58

NeRight719

総合スコア47

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

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

yayak

2021/12/11 12:59

有難うございます!よく勉強しようと思います!
guest

0

ベストアンサー

.clone()の返却値は要素そのものであって文字列ではないので、エラーメッセージの通りreplace()は機能としては持っていません。
もし親要素があるなら親要素の.html()から文字列として取得して.replace()というのはあるかもしれませんが、
いっそのこと新しい要素を作って同じ属性配置しては如何でしょう。

js

1 var p = $('<p>',{'data-sample':$(this).attr('data-sample'),class:$(this).attr('class'),text:$(this).html()}); 2 $(this).after(p); 3

投稿2021/12/11 12:45

編集2021/12/11 12:46
m.ts10806

総合スコア80875

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

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

yayak

2021/12/11 12:55

非常にわかりやすく、理解できました! 新しい要素を作って同じ属性配置というのが、一番合理的なのかなと思いました。 有難うございます。心より感謝いたします<(_ _)>
m.ts10806

2021/12/11 12:58

いえ、あくまで一例ですし、固定値でとってるので非効率極まりないと思っています。要件次第で幾らでもやり方は変わります。
yayak

2021/12/11 12:59

そうなのですね>< まだまだ勉強不足で、頭が下がります・・ 有難うございました<(_ _)>
m.ts10806

2021/12/11 13:00 編集

NeRight719さんの回答をベストアンサーにしたほうが良いと思います。 私の場合は「書き換え」とは違うので(「置き換え」に近い)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問