Jawaban:
Saya menganggap Anda meminta string HTML lengkap. Jika itu masalahnya, sesuatu seperti ini akan membantu:
$('<div>').append($('#item-of-interest').clone()).html();
Ini dijelaskan secara lebih mendalam di sini , tetapi pada dasarnya Anda membuat simpul baru untuk membungkus item yang menarik, melakukan manipulasi, menghapusnya, dan mengambil HTML.
Jika Anda hanya setelah representasi string, maka ikuti new String(obj)
.
Saya menulis jawaban asli pada tahun 2009. Pada tahun 2014, sebagian besar browser utama sekarang mendukung outerHTML
sebagai properti asli (lihat, misalnya, Firefox dan Internet Explorer ), sehingga Anda dapat melakukan:
$('#item-of-interest').prop('outerHTML');
$(...)
adalah simpul DOM yang valid.)
data
Bisakah kamu sedikit lebih spesifik? Jika Anda mencoba memasukkan HTML ke dalam tag, Anda dapat melakukan sesuatu seperti ini:
Cuplikan HTML:
<p><b>This is some text</b></p>
jQuery:
var txt = $('p').html(); // Value of text is <b>This is some text</b>
Cara terbaik untuk mengetahui properti dan metode apa yang tersedia untuk simpul HTML (objek) adalah dengan melakukan sesuatu seperti:
console.log($("#my-node"));
Dari jQuery 1.6+ Anda cukup menggunakan outerHTML untuk memasukkan tag HTML dalam output string Anda:
var node = $("#my-node").outerHTML;
$('#my-node').get(0).outerHTML
seperti dalam mppfiles' jawaban
.outerHTML
tidak bekerja untuk saya, tetapi .prop('outerHTML')
berhasil.
jQuery ada di sini, jadi:
jQuery.fn.goodOLauterHTML= function() {
return $('<a></a>').append( this.clone() ).html();
}
Kembalikan semua barang HTML itu:
$('div' /*elys with HTML text stuff that you want */ ).goodOLauterHTML(); // alerts tags and all
Ini sepertinya bekerja dengan baik untuk saya:
$("#id")[0].outerHTML
Jawaban yang diterima tidak mencakup simpul teks (tidak terdefinisi dicetak).
Cuplikan kode ini menyelesaikannya:
var htmlElements = $('<p><a href="http://google.com">google</a></p>↵↵<p><a href="http://bing.com">bing</a></p>'),
htmlString = '';
htmlElements.each(function () {
var element = $(this).get(0);
if (element.nodeType === Node.ELEMENT_NODE) {
htmlString += element.outerHTML;
}
else if (element.nodeType === Node.TEXT_NODE) {
htmlString += element.nodeValue;
}
});
alert('String html: ' + htmlString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Tidak perlu mengkloning dan menambah DOM untuk menggunakan .html (), Anda dapat melakukan:
$('#item-of-interest').wrap('<div></div>').html()
wrap()
mengembalikan elemen yang dibungkus, bukan elemen yang dibungkus? Jadi ini harus memberikan html dari elemen induk #item-of-interest
bukan itu div
(kecuali jQuery berubah sejak Februari 2012).
Jika Anda ingin merangkai elemen HTML untuk meneruskannya ke suatu tempat dan menguraikannya kembali ke suatu elemen, cobalah dengan membuat kueri unik untuk elemen tersebut:
// 'e' is a circular object that can't be stringify
var e = document.getElementById('MyElement')
// now 'e_str' is a unique query for this element that can be stringify
var e_str = e.tagName
+ ( e.id != "" ? "#" + e.id : "")
+ ( e.className != "" ? "." + e.className.replace(' ','.') : "");
//now you can stringify your element to JSON string
var e_json = JSON.stringify({
'element': e_str
})
dari
//parse it back to an object
var obj = JSON.parse( e_json )
//finally connect the 'obj.element' varible to it's element
obj.element = document.querySelector( obj.element )
//now the 'obj.element' is the actual element and you can click it for example:
obj.element.click();