2010-02-23 13 views
9

Disculpe, si el título es demasiado oscuro; D.¿Cómo obtener innerHtml, incluida la etiqueta, usando jQuery?

En realidad, el problema es, digamos que soy este código.

<span id="spanIDxx" style="blah-blah"> 
    <tag1>code here </tag2> sample text 
    <tag2>code here </tag2> html aass hhddll 
    sample text 
</span> 

Ahora si voy a utilizar el código.

jQuery("#spanIDxx").html(); 

luego volverá sólo el innerHTML excluyendo <span id="spanIDxx" style="blah-blah">
pero quiero algo que puede devolver el innerHTML incluyendo el elemento especificado.

Respuesta

11

Esto creará un nuevo div y anexar un clon de su elemento al que div. El nuevo div nunca se inserta en el DOM, por lo que no afecta su página.

var theResult = $('<div />').append($("#spanIDxx").clone()).html(); 

alert(theResult); 

Si necesita utilizar esta frecuencia, y no quieren molestarse con la adición de un nuevo plugin, sólo lo hacen en una función:

function htmlInclusive(elem) { return $('<div />').append($(elem).clone()).html(); } 

alert(htmlInclusive("#spanIDxx")); 

o ampliar jQuery mismo:

$.fn.htmlInclusive = function() { return $('<div />').append($(this).clone()).html(); } 

alert($("#spanIDxx").htmlInclusive()); 
+0

Algunos cap escribió un plugin llamado 'outerHTML' para hacer esto: http: //brandonaaron.net/blog/2007/06/17/jquery-snippets-outerhtml/. Alguien más extendió el complemento para permitir el reemplazo: http://yelotofu.com/2008/08/jquery-outerhtml/ –

+0

great +1, aceptó la solución :) –

1

puede copiar el nodo a un nuevo nodo vacío, pida nueva .parent() y luego su .html()

1

Clone puede serle útil. No creo que realmente necesites hacer algo con los clones.

Cuestiones relacionadas