style ejemplo data change attribute jquery stringification

ejemplo - ¿Cómo convertir un objeto jQuery en una cadena?



jquery prop (12)

¿Cómo convertir un objeto jQuery en una cadena?


¿Podrías ser un poco más específico? Si está intentando obtener el HTML dentro de una etiqueta, puede hacer algo como esto:

Fragmento de HTML:

<p><b>This is some text</b></p>

jQuery:

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


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

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


Esto parece funcionar bien para mí:

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


La mejor manera de averiguar 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 usar outerHTML para incluir las etiquetas HTML en tu resultado de cadena:

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


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

Este fragmento de código lo resuelve:

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>


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

$(''#item-of-interest'').wrap(''<div></div>'').html()


Puede ser posible usar la función de utilidad jQuery.makeArray(obj) :

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


Si desea alinear un elemento HTML para pasarlo a algún lugar y analizarlo de nuevo a un elemento, intente creando 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();


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

var $elem = $(''<a href="#">Some element</a>''); console.log("HTML is: " + $elem.get(0).outerHTML);


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

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

Esto se explica con mayor profundidad here , pero básicamente crea un nuevo nodo para envolver el elemento de interés, hacer las manipulaciones, eliminarlo y capturar el HTML.

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

Actualizar

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

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


jQuery está aquí arriba, así que:

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

Devuelve todas esas cosas HTML:

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


new String(myobj)

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