2012-02-04 8 views
5

Lo siento por una pregunta realmente estúpida. Pero no funciona de ninguna manera.¿Cómo obtener html() del elemento excluyendo otro elemento?

<html> 
<head> 
<script src='js/jquery.js' type='text/javascript'></script> 
<script type='text/javascript'> 
    $(document).ready(function() { 
    var htmlcontent = $('.content').not('.dontgrab').html(); 
    alert(htmlcontent); // returns EVERYTHING 
    }); 
</script> 
</head> 
<body> 
<div class='content'> 
    BEFORE 
    <div class='dontgrab'>DON'T GRAB</div> 
    AFTER 
</div> 
</body> 
</html> 

$ probamos ("contenido *:. No ('dontgrab')"). Html(); // devuelve NULL

Por favor ayuda.

Gracias.

+0

@DavidRodrigues: no. ya probado. –

+0

Gracias chicos. Supongo que será muy fácil eliminar el elemento() y luego simplemente volver a crearlo. –

Respuesta

10

Esto debe hacerlo:

var clone = $('div.content').clone(); 
clone.find('.dontgrab').remove(); 

var html = clone.html(); 
+0

¿Esto eliminará el elemento .dontgrab del documento? ¡Necesito quedármelo! –

+0

Lo clonará (temporalmente), solo eliminará del clon, no del documento. –

+0

¿Alguna otra manera? Parece ser un poco de codificación adicional. =) –

-1

Creo que está tratando de hacer:

var htmlcontent = $('.content').remove(".dontgrab").html(); 

usted podría utilizar .no() si la situación era como:

var htmlcontent = $('div').not(".dontgrab").html(); 

<body> 
<div class="content"> 
    BEFORE 

    AFTER 
</div> 
<div class="content dontgrab">DON'T GRAB</div> 
</body> 

No creo que puedas usar .not para elementos seleccionados niños. Espero que ayude

Cuestiones relacionadas