2008-11-28 9 views
7

Dado un conjunto de resultados de jQuery, ¿cómo lo convierte de nuevo en HTML sin formato?Convierta un conjunto de jQuery en HTML

<div class="abc"> 
    foo <strong>FOO</strong> 
</div> 
<div class="def"> 
    bar 
</div> 

-

var $mySet = $('div'); 

Dada $mySet, ¿cómo haría usted para volver a la versión HTML de arriba?

Respuesta

4

Si su conjunto se compone de un elemento, precisamente, puede utilizar Ye Olde Javascript:

var html = $mySet[0].outerHTML; // note HTML is all caps... that always burns me 
+0

Puede extender esto para obtener todos los elementos con bastante facilidad: '$ mySet.map (function() {return this.outerHTML;}). Get(). Join ('');' Cuando escribí esta pregunta, no todos los navegadores soportan 'outerHTML', pero ahora parece tener [bastante buen soporte] (https://developer.mozilla.org/en/DOM/element.outerHTML#Browser_compatibility) – nickf

+1

solo devolverá la cadena HTML del primer elemento encontrado. – vsync

+0

No es un gran admirador de esta respuesta, ¿qué pasa si su conjunto _no consta de un elemento? – Thomas

0
var $mySet = $('div'); 
var html = $mySet.html(); 

Si desea HTML del elemento, así (no probado):

var $mySet = $('div'); 
var html = $mySet.clone().wrap('<div></div>').html(); 

Por cierto, aquí $ es parte del nombre de la variable. Javascript no requiere un $ como en PHP para nombres de variables, pero no hace daño tenerlo.

+1

que lo siente incorrecto. esto solo devolverá el HTML interno del primer div. en realidad estoy buscando que vuelva a HTML como en el primer ejemplo anterior. – nickf

+0

Prueba mi segundo fragmento. – strager

0

Usando el método jQuery appendTo, si entiendo bien lo que quiere decir con "volver al HTML plano anterior".

11

me gustaría sugerir la creación de un contenedor temporal, y luego agarrar el html() de ese nuevo contenedor:

var html = $('<div>').append($('div').clone()).html(); 
alert(html); 

// alerts: 

<div class="abc"> 
    foo <strong>FOO</strong> 
</div><div class="def"> 
    bar 
</div> 
1

tal vez lo que desea es un motor de plantillas del lado del cliente. echa un vistazo a la publicación Client Templating with jQuery

lo estoy usando y es muy bueno. Usted acaba de establecer la plantilla que desea utilizar dentro de un div, luego lo alimenta con un objeto/matriz json y eso es todo.

Cuestiones relacionadas