Bagaimana anda mengkonversi objek jQuery ke dalam string?
Saya asumsikan anda're meminta penuh string HTML. Jika itu's terjadi, sesuatu seperti ini akan melakukan trik:
$('<div>').append($('#item-of-interest').clone()).html();
Hal ini dijelaskan secara lebih mendalam di sini, tetapi pada dasarnya anda membuat node baru untuk membungkus item yang menarik, melakukan manipulasi, menghapus, dan ambil kode HTML.
Jika anda're hanya setelah representasi string, kemudian pergi dengan new String(obj)
.
Saya menulis jawaban asli pada tahun 2009. Pada 2014, browser yang paling utama sekarang mendukung outerHTML
sebagai penduduk asli milik (lihat, misalnya, Firefox dan [Internet Explorer][3]), sehingga anda dapat melakukan:
$('#item-of-interest').prop('outerHTML');
[3]: http://msdn.microsoft.com/en-us/library/ie/ms534310(v=vs. 85).aspx)
Anda dapat menjadi sedikit lebih spesifik? Jika anda're berusaha untuk mendapatkan HTML di dalam sebuah tag, anda dapat melakukan sesuatu seperti ini:
Potongan 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 mencari tahu apa sifat dan metode yang tersedia untuk HTML node (objek) adalah untuk melakukan sesuatu seperti:
console.log($("#my-node"));
Dari jQuery 1.6+ anda hanya dapat menggunakan outerHTML untuk memasukkan tag-tag HTML di dalam string output:
var node = $("#my-node").outerHTML;
jQuery adalah di sini, jadi:
jQuery.fn.goodOLauterHTML= function() {
return $('<a></a>').append( this.clone() ).html();
}
Kembali semua barang HTML:
$('div' /*elys with HTML text stuff that you want */ ).goodOLauterHTML(); // alerts tags and all
Jawaban yang diterima doesn't penutup teks node (undefined dicetak).
Potongan kode ini memecahkan itu:
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>
Jika anda ingin stringify elemen HTML dalam rangka untuk lulus ke suatu tempat dan mengurai kembali ke unsur mencoba dengan membuat kueri unik untuk elemen:
// '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();
Itu mungkin untuk menggunakan jQuery.makeArray(obj)
fungsi utilitas:
var obj = $('<p />',{'class':'className'}).html('peekaboo');
var objArr = $.makeArray(obj);
var plainText = objArr[0];