重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは、
現在、jQueryを勉強中なのですが、要素だけを変更することは可能なのでしょうか?例えば以下の<h1>タグを<h2>に変えたい、といった具合です。

<h1> wanna replace heading 1 with heading 2 </h1>

.htmlも.replaceWithも、テキストの内容ごと変えてしまうので、「要素だけ」を変更することができません。何か大きな勘違いをしていましたら、ご指摘いただければ幸いです。よろしくお願いします。

A 回答 (4件)

チョット、確認していないのでハッキリとわかりませんが、


<h1>テキスト</h1>
の「テキスト」部分は
$("h1").text()
で、取得できますので
.repladeWith()
と、組み合わせて
$("h1").replaceWith("<h2>"+$("h1").text+"</h2>")
みたいにして、できないでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/13 17:47

>>No.3



 $.fn.myMethod = function(arg) {
  return this.replaceWith($(arg).text(this.text()));
 };

これにはバグがありますね。ゴメンなさい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/13 17:50

(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でまとめとけばよいかも。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/13 17:50

jqueryはよく知りませんが、


現在の内容を入れ直してあげるとかではダメでしょうか?

$("h1").each(function(){
 $(this).replaceWith("<h2>" + $(this).html() + "</h2>");
});

この回答への補足

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

補足日時:2011/01/12 21:30
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/12 21:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!