• ベストアンサー

jQuery|要素だけを変更できますか?

こんにちは、 現在、jQueryを勉強中なのですが、要素だけを変更することは可能なのでしょうか?例えば以下の<h1>タグを<h2>に変えたい、といった具合です。 <h1> wanna replace heading 1 with heading 2 </h1> .htmlも.replaceWithも、テキストの内容ごと変えてしまうので、「要素だけ」を変更することができません。何か大きな勘違いをしていましたら、ご指摘いただければ幸いです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140045
noname#140045
回答No.2

チョット、確認していないのでハッキリとわかりませんが、 <h1>テキスト</h1> の「テキスト」部分は $("h1").text() で、取得できますので .repladeWith() と、組み合わせて $("h1").replaceWith("<h2>"+$("h1").text+"</h2>") みたいにして、できないでしょうか。

salt_on_all
質問者

お礼

お礼が遅くなってしまってごめんなさい。 実際に試してみましたが、ばっちり機能しました。そしてこれが一番スマートですね。使わせていただきます。 ありがとうございました!

その他の回答 (3)

  • my--
  • ベストアンサー率89% (91/102)
回答No.4

>>No.3  $.fn.myMethod = function(arg) {   return this.replaceWith($(arg).text(this.text()));  }; これにはバグがありますね。ゴメンなさい。

salt_on_all
質問者

お礼

ありがとうございました!

  • my--
  • ベストアンサー率89% (91/102)
回答No.3

(function($) {  $.fn.myMethod = function(arg) {   return this.replaceWith($(arg).text(this.text()));  }; })(jQuery); $('h1').myMethod('<h2 />'); プラグインを眺めてると、こんな感じで拡張されていますよね。 (function($) {  $.fn.extend({   method1: function() {    ...    return this;   },   method2: function() {    ...    return this;   }  }); })(jQuery); オレオレ的なメソッドの公開なら、extendでまとめとけばよいかも。

salt_on_all
質問者

お礼

お礼が遅くなってしまってごめんなさい。 自分で命令を作っちゃうってことですよね?ハードル高いですけど、本当に必要に迫られたときにはチャレンジしてみようと思います。ありがとうございました!

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

jqueryはよく知りませんが、 現在の内容を入れ直してあげるとかではダメでしょうか? $("h1").each(function(){  $(this).replaceWith("<h2>" + $(this).html() + "</h2>"); });

salt_on_all
質問者

お礼

ご回答ありがとうございます。 それなら可能です。ただ要素の入れ替えというのは、1番はじめに覚える命令としてあっても良さそうなので・・当方の勝手な思い込みかもしれないですね・・。使いそうで使わない気もしますし。ありがとうございました。

salt_on_all
質問者

補足

ちなみに、今のところ一番簡潔なのは、<h2>で「wrap」してから、「remove」で<h1>を消す、という方法でしょうか。

関連するQ&A

専門家に質問してみよう