jQueryは、コンテナー自体を含むコンテナーのhtmlを取得します


156

「#container」を含む「#container」のHTMLを取得するにはどうすればよいですか?

<div id="container">
 <div id="one">test 1 </div>
 <div id="two">test 2 </div>
 <div id="three">test 3 </div>
 <div id="four">test 4 </div>
</div>

私はこれを#container内にHTMLを取得します。#container要素自体は含まれません。それが私がやろうとしていることです

var x = $('#container').html();
$('#save').val(x);

http://jsfiddle.net/rzfPP/58/を確認してください


コンテナーを別のコンテナー内に配置して、そのコンテナーをhtmlにすることもできますが、少しハックに思えます。おそらく問題についてもう少し知っていれば、実行可能な解決策を考え出すことができますか?HTMLでいっぱいのテキスト領域で何をしていますか?
パトリシア

回答:


160

コンテナーをダミータグでラップPすると、コンテナーHTMLも取得されます。

あなたがする必要があるのは

var x = $('#container').wrap('<p/>').parent().html();

http://jsfiddle.net/rzfPP/68/で実際の例を確認してください

タグを行って、あなたが追加することができますunwrap()<p>

$('#container').unwrap();

19
@ mc10我々は単にclone()を使用でき、作成された余分な要素について心配する必要はありません。 var x = $('#container').clone().wrap('<p/>').parent().html();。ラップのアイデアは素晴らしく、提供されるほとんどのソリューションよりも複雑ではありません。
ピンキー

Firefoxの問題は古くなっているので、純粋なJSにあるため、@ MikeMの回答に投票することをお勧めします。
Rob

6
なぜ<p>タグなのか?<div>もっと意味がありませんか?
マーティンバーチ2014年

6
これははるかに簡単な解決策を持っています。私の答えを見てください。
1.44mb

132
var x = $('#container').get(0).outerHTML;

更新:これは、FireFox 11(2012年3月)の時点でFirefoxによってサポートされています。

他の人が指摘したように、これはFireFoxでは機能しません。FireFoxで動作させる必要がある場合は、この質問への回答を確認することをお勧めします。jQueryには、 html()またはtext()に似ているが、一致するコンポーネントのコンテンツ全体を返す関数はありますか?


6
これはFirefoxで機能し、現在受け入れられているソリューションよりも優れています。
luqita

これはエレガントな方法であり、受け入れられた回答であり、汚いハック
でした

これは完璧です。
Gaurav Aggarwal

親タグをdivまたはpでラップすることは悪い考えであるため、これは完璧な答えです。あなたのCSSが壊れる可能性があります。特にブートストラップを使用している場合(例:form-row)。したがって、この答えはかなり良いです。
Sudhir K Gupta

73

私はこれを使いたいです。

$('#container').prop('outerHTML');

7
これは私にとって最良の解決策のようであり、dom操作または疑似dom操作(wrapメソッド)を必要としません。そして、jqueryオブジェクトはすでにプロパティを持っています。
Nieminen

1
このソリューションが大好き
Sameera Kumarasingha 2018

69
var x = $('#container')[0].outerHTML;

1
Firefoxの問題は古くなっているので、この回答に投票することをお勧めします。
Rob

1
.clone()を使用しても機能しますが、これは非常にきれいです。受け入れられた回答は、DOMに新しい要素を作成します= bad。
ピート14年

13
$('#container').clone().wrapAll("<div/>").parent().html();

更新:outerHTMLがFirefoxで動作するようになりました。Firefoxの非常に古いバージョンをサポートする必要がない限り、他の回答を使用してください


outerHTMLプロパティはFirefoxでは機能しないため、クローンで実行する必要があります
Robert Noack

2

Oldie but goldie ...

ユーザーがjQueryを要求しているので、私はそれをシンプルに保つつもりです:

var html = $('#container').clone();
console.log(html);

ここでフィドル。


2
これは、コンテナー自体のhtmlの取得には役立ちません。htmlコードも返しません。domの変更を回避するためにクローンを介してターゲットノードにアクセスするのが実用的であることがわかりますが、この方法を使用する理由を述べておくとよいでしょう。
AeonOfTime 2018



0
var x = $($('div').html($('#container').clone())).html();

6
1つのステートメントで3つのjqueryオブジェクトを作成しています。機能しますが、やり過ぎです。
ピンキー

-2

例を使用した簡単なソリューション:

<div id="id_div">
  <p>content<p>
</div>

このDIVをid = "other_div_id"を持つ他のDIVに移動します

$('#other_div_id').prepend( $('#id_div') );

仕上げ


OPは、jQueryオブジェクトによって表される未加工のHTMLを要求しています。このメソッドは、jQueryオブジェクトをある場所から別の場所に移動します。
Simon Robb 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.