¿Cómo conviertes un objeto jQuery en una cadena?
¿Cómo conviertes un objeto jQuery en una cadena?
jefe7
Juan Feminella
Supongo que está 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 más profundidad. aquípero esencialmente crea un nuevo nodo para envolver el elemento de interés, realiza las manipulaciones, lo elimina y toma el HTML.
Si solo busca una representación de cadena, vaya con 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 una propiedad nativa (ver, por ejemplo, Firefox y explorador de Internet), por lo que puedes hacer:
$('#item-of-interest').prop('outerHTML');
-
Apesta que no haya un método para hacer esto, pero esta es una gran solución a pesar de todo.
–Steve
8 de marzo de 2010 a las 16:45
-
esto elimina las etiquetas de cabeza y cuerpo
– ilǝ
9 de enero de 2013 a las 7:06
-
@ user85461 Sin embargo, ese no es un nodo DOM válido, por lo que sería incorrecto intentar llamar a HTML externo para empezar. (Solo un pequeño subconjunto de lo que puede entrar
$(...)
es un nodo DOM válido).– Juan Feminella
25/02/2015 a las 17:50
-
@Moss te da html interno, o más simple, lo que es en el interior de elemento, mientras que outsideHtml te da elemento como un todo
– zakius
19 de enero de 2016 a las 13:43
-
Tenga en cuenta que perderá
data
– Oleg
12 de abril de 2017 a las 15:15
Con jQuery 1.6, esta parece ser una solución más elegante:
$('#element-of-interest').prop('outerHTML');
-
@Jean-PhilippeLeclerc En Firefox 15.0.1 (linux) funciona de maravilla.
– dave
21 de septiembre de 2012 a las 13:01
Simplemente use .get(0) para obtener el elemento nativo y obtener su propiedad HTML exterior:
var $elem = $('<a href="#">Some element</a>');
console.log("HTML is: " + $elem.get(0).outerHTML);
-
Mucho mejor ya que conserva mis atributos también. ¡Gracias!
– Rohit
09/04/2014 a las 15:07
alex rockwell
¿Podrías ser un poco más específico? Si está tratando de obtener el HTML dentro de una etiqueta puedes hacer algo como esto:
Fragmento HTML:
<p><b>This is some text</b></p>
jQuery:
var txt = $('p').html(); // Value of text is <b>This is some text</b>
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+, puede usar HTML externo para incluir las etiquetas HTML en la cadena de salida:
var node = $("#my-node").outerHTML;
-
es
$('#my-node').get(0).outerHTML
como en la respuesta de mppfiles– Schellmax
8 de agosto de 2013 a las 15:53
-
.outerHTML
no funcionó para mí, pero.prop('outerHTML')
hizo.– dnns
9 de noviembre de 2015 a las 9:29
Pedro Mortensen
jQuery está aquí, 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
-
es
$('#my-node').get(0).outerHTML
como en la respuesta de mppfiles– Schellmax
8 de agosto de 2013 a las 15:53
-
.outerHTML
no funcionó para mí, pero.prop('outerHTML')
hizo.– dnns
9 de noviembre de 2015 a las 9:29
johan dettmar
Esto parece funcionar bien para mí:
$("#id")[0].outerHTML
-
También estaba usando esto, pero parece que no funciona para Firefox 6.0.1.
– mikong
2 de septiembre de 2011 a las 10:25