¿Hay alguna manera de extraer el elemento del cuerpo sin un elemento secundario en particular?

Por ejemplo, si tengo:

<body>
  <div id="id1" class="class1" />
  <div id="id2" class="class2" />
</body>

, lo que necesito extraer es:

<body>
  <div id="id1" class="class1" />
</body>

En realidad, tengo la intención de usar la html2canvas biblioteca para hacer un elemento de lienzo a partir de un código HTML, pero no quiero incluya a todos los niños del cuerpo en un elemento de lienzo.

1
peterremec 10 may. 2016 a las 13:12

3 respuestas

La mejor respuesta

Si recupera un elemento primario, también debe tomar todos sus elementos secundarios. Una posible solución en este caso sería seleccionar body, clonarlo y luego eliminar el elemento hijo no deseado, algo como esto:

var $bodyClone = $('body').clone();
$bodyClone.find('#id2').remove();
// use $bodyClone as needed here...
2
Rory McCrossan 10 may. 2016 a las 10:14
$('body').not("#id2").html(); 
or 
$('body').not(".class2").html();

Y esto es para múltiples

$( "div" ).not( ".someclass, #someid,.class").html()

Espero que ayude

1
Naisa purushotham 10 may. 2016 a las 10:22

Puedes usar document.getElementById(id) para obtener un elemento

O getElementsByClassName(class) y luego filtra la matriz devuelta

Usar mejores identificadores o clases podría ayudarlo a evitar el filtrado, simplemente asigne una clase a todos sus lienzos y reemplácelos a todos.

0
HopefullyHelpful 10 may. 2016 a las 10:52