¿Cómo se convierte un objeto jQuery en una cadena?

¿Cómo se convierte un objeto jQuery en una cadena?

Supongo que estás pidiendo la cadena HTML completa. Si ese es el caso, algo así hará el truco:

$('
').append($('#item-of-interest').clone()).html();

Esto se explica con más profundidad aquí , pero esencialmente se crea un nuevo nodo para envolver el elemento de interés, hacer las manipulaciones, eliminarlo y tomar el HTML.

Si solo buscas una representación de cadena, entonces ve con una new String(obj) .

Actualizar

Escribí la respuesta original en 2009. A partir de 2014, la mayoría de los navegadores principales ahora admiten outerHTML como una propiedad nativa (ver, por ejemplo, Firefox e Internet Explorer ), por lo que puede hacer:

 $('#item-of-interest').prop('outerHTML'); 

Con jQuery 1.6, esta parece ser una solución más elegante:

 $('#element-of-interest').prop('outerHTML'); 

Simplemente use .get (0) para tomar el elemento nativo y obtener su propiedad outerHTML:

 var $elem = $('Some element'); console.log("HTML is: " + $elem.get(0).outerHTML); 

¿Podrías ser un poco más específico? Si intentas obtener el código HTML dentro de una etiqueta, puedes hacer algo como esto:

Fragmento de HTML:

 

This is some text

jQuery:

 var txt = $('p').html(); // Value of text is This is some text 

La mejor manera de descubrir qué propiedades y métodos están disponibles para un nodo HTML (objeto) es hacer algo como:

 console.log($("#my-node")); 

Desde jQuery 1.6+ puedes simplemente usar outerHTML para incluir las tags HTML en tu resultado de cadena:

 var node = $("#my-node").outerHTML; 

jQuery está aquí, así que:

 jQuery.fn.goodOLauterHTML= function() { return $('').append( this.clone() ).html(); } 

Devuelve todo ese material HTML:

 $('div' /*elys with HTML text stuff that you want */ ).goodOLauterHTML(); // alerts tags and all 

Esto parece funcionar bien para mí:

 $("#id")[0].outerHTML 

La respuesta aceptada no cubre los nodos de texto (se imprime sin definir).

Este fragmento de código lo resuelve:

 var htmlElements = $('

google

↵↵

bing

'), 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);
  

No es necesario clonar y agregar al DOM para usar .html (), puede hacer:

 $('#item-of-interest').wrap('
').html()

Es posible utilizar la función de utilidad jQuery.makeArray(obj) :

 var obj = $('

',{'class':'className'}).html('peekaboo'); var objArr = $.makeArray(obj); var plainText = objArr[0];

Si desea stringify un elemento HTML para pasarlo a alguna parte y analizarlo de nuevo a un elemento intente mediante la creación de una consulta única para el elemento:

 // '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 }) 

que

 //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(); 
 new String(myobj) 

Si desea serializar todo el objeto en una cadena, use JSON .