2011-12-27 40 views
6
<div> 
    <a href="#" class="selected">link1</a> 
    <a href="#">link1</a> 
</div> 

y el uso siguienteobtener el código HTML con jQuery auto

$('.selected').html() consigo

link1

como valor de retorno.

¿Cómo puedo obtener el código HTML completo del elemento DOM seleccionado, en este ejemplo para obtener

<a href="#" class="selected">link1</a>

en su lugar?

gracias

+0

Sí. solo $ ('. selected'). parent(). html() funcionará. –

+1

@Umesh esto no funcionará si hay algunos hermanos, que también se incluirán. – Armin

+0

@Armin, vista aceptada :) –

Respuesta

10

jQuery objeto:

$('.selected') 

convertido al objeto DOM:

$('.selected')[0] 

ACTUALIZACIÓN:

var str = $("<div />").append($('.selected').clone()).html(); 
console.log(str); 
+0

Eso le dará el objeto DOM, no la cadena html ... – Deleteman

+0

Oh, tienes razón. – akai

+0

¿No es esto 'clon' un poco doloroso cuando hay una gran cantidad de datos? – elhoyos

12

sé que esto funciona en Chrome, no sé sobre el resto:

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

Esa propiedad es de Javascript (jQuery no) y le da lo que estás buscando .

+0

esto no funciona en Firefox – Kupe3

+0

Mozilla dice que ahora está trabajando a partir de Firefox 11: https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML – Dwayne

+0

Funciona en FireFox 47, IE11, Opera 38 – ChelowekKot

0

simple uso de la propiedad outerHTML puede no funcionar en todos los navegadores. Tendrá que serializarlo usted mismo para buscadores sin soporte para outerHTML. Ver este post para una explicación: How do I do OuterHTML in firefox?

4

Hice una solución similar a la anterior, pero sin la clonación.

var test = $('#test').wrap('<div class="wrap-unwrap"></div>'); 
var str = test.parent().html(); 
test.unwrap(); 
console.log(str); 
Cuestiones relacionadas