jQuery konteyner kendisi de dahil olmak üzere konteyner html olsun


156

'#Container' da dahil olmak üzere '#container' üzerindeki html'yi nasıl edinebilirim?

<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 içinde html alır bu var. #container öğesinin kendisini içermez. Yapmak istediğim şey bu

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

Http://jsfiddle.net/rzfPP/58/ adresini kontrol edin


başka bir kabın içine kap koyabilir ve o kapları html alabilirsiniz ... ama bu biraz acayip görünüyor. belki sorun hakkında biraz daha fazla bilgi sahibi olsaydık, uygulanabilir bir çözüm bulabilirdik? html ile dolu bir metin alanıyla ne yapıyorsun?
— Patricia

Yanıtlar:


160

Kapsayıcı bir sahte Petikete sarılırsa , kapsayıcı HTML'sini de alırsınız.

Tek yapman gereken

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

Http://jsfiddle.net/rzfPP/68/ adresinde çalışan örneği kontrol edin

To etiketi yapılır, ekleyebilirsinizunwrap()<p>

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

19
@ mc10 sadece clone () kullanabiliriz ve oluşturulan ekstra öğeler için endişelenmenize gerek kalmaz. var x = $('#container').clone().wrap('<p/>').parent().html();. Sarma fikri harika ve sağlanan çözümlerin çoğundan daha az karmaşık.
— Pinkie

Firefox sorunu güncel değil, bu yüzden saf JS'de @MikeM yanıtını oylamanızı öneririm.
— Rob

6
Neden bir <p>etiket? Bir olmaz mıydı <div>yapmak daha mantıklı?
— Martin Burch

6
Bunun çok daha basit bir çözümü var. Cevabımı gör.
— 1.44mb

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

GÜNCELLEME : Bu, FireFox 11 (Mart 2012) itibariyle Firefox tarafından desteklenmektedir

Diğerlerinin de belirttiği gibi, bu FireFox'ta çalışmaz. FireFox'ta çalışması gerekiyorsa, bu sorunun cevabına bir göz atmak isteyebilirsiniz: jQuery'de, html () veya text () işlevine benzeyen ancak eşleşen bileşenin tüm içeriğini döndüren herhangi bir işlev var mı?


6
Bu Firefox'ta çalışıyor ve şu an için kabul edilen çözümden daha iyi.
— luqita

Bu, bunu yapmak için zarif bir yol, o zaman sadece kirli bir hack kabul edilen cevap daha iyi
— minhajul

Bu harika.
— Gaurav Aggarwal

bu mükemmel yanıttır çünkü üst etiketi div veya p ile sarmak kötü bir fikirdir. belki senin css kırılacak. özellikle bootstrap kullanırken (örn. form satırı). dolayısıyla bu cevap oldukça iyi.
— Sudhir K Gupta

73

Bunu kullanmayı seviyorum;

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

7
Bu benim için en iyi çözüm gibi görünüyor, dom manipülasyonu veya sahte dom manipülasyonu (sarma yöntemleri) gerektirmiyor. Ve jquery nesnesi zaten özelliğe sahiptir.
— Nieminen

1
Bu çözümü seviyorum
— Sameera Kumarasingha

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

1
Firefox sorunu güncel değil, bu yüzden bu yanıtı oylamanızı öneririm.
— Rob

1
.Clone () kullanmak işe yarar, ama bu çok daha temiz, imo. Kabul edilen cevap, DOM = bad içinde yeni öğeler oluşturur.
— pete

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

Güncelleme: outerHTML artık firefox'ta çalışıyor, bu nedenle firefox'un çok eski sürümlerini desteklemeniz gerekmedikçe diğer yanıtı kullanın


outerHTML özelliği Firefox'ta çalışmaz, bu nedenle klonla yapmanız gerekir
— Robert Noack

2

Eski ama iyi...

Kullanıcı jQuery istediğinden, basit tutacağım:

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

Burada keman çal.


2
Bu, kabın kendisinin html'sinin alınmasında yardımcı olmaz. HTML kodu bile döndürmez. Domu değiştirmekten kaçınmak için hedef düğüme klon yoluyla erişmenin pratik olabileceğini görebilirim, ancak bu yöntemi neden kullandığınızı belirtmek iyi olur.
— AeonOfTime


0

Firefox outerHTML desteklemediği Gerekirse bu nedenle, bir işlev tanımlamak yardım desteği kendisine:

function outerHTML(node) {
    return node.outerHTML || (
        function(n) {
            var div = document.createElement('div');
            div.appendChild( n.cloneNode(true) );
            var h = div.innerHTML;
            div = null;
            return h;
        }
    )(node);
}

Daha sonra outerHTML'yi kullanabilirsiniz:

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

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

6
Bir deyimde 3 jquery nesnesi oluşturuyorsunuz. Çalışmasına rağmen, aşırıya kaçma.
— Pinkie

-2

Bir örnekle basit çözüm:

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

Bu DIV'yi id = "other_div_id" ile diğer DIV'ye taşıyın

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

Bitiş


OP, bu yöntemin bir jQuery nesnesini bir yerden başka bir yere taşıdığı bir jQuery nesnesi tarafından temsil edilen ham HTML'yi istiyor.
— Simon Robb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.