2010-06-24 22 views
7

Código:¿Cómo eliminar un elemento del objeto jQuery?

<div id="d1">d1</div> 
<div id="d2">d2</div> 
<script> 
$(function(){ 
    var j=$(); 
    j=j.add("#d1"); 
    j=j.add("#d2"); 

    j.remove("#d1");//not this... 
    //alert(j.length); 
    j.css("border","1px solid red"); 
}); 
</script> 

He usado j.add() añadir elementos a j, pero cómo los elimino de #d1j?

j.remove() no está funcionando, ya que elimina la #d1 y aún así estar j.length 2.

Gracias todos! :)

+2

@pranay_stacker: '$()' –

Respuesta

11
<div id="d1">d1</div> 
<div id="d2">d2</div> 
<script> 
$(function(){ 
var j=$(); 
j=j.add("#d1"); 
j=j.add("#d2"); 

j=j.not("#d1"); 
//alert(j.length); 
j.css("border","1px solid red"); 
}); 
</script> 

demo

+0

1 ... y añadí una demo .. – Reigel

+0

@Reigel Gracias para agregar la demo –

1

Utilice la función jQuery grep():

<div id="d1">d1</div> 
<div id="d2">d2</div> 
<script> 
$(function(){ 
    var j=$(); 
    j=j.add("#d1"); 
    j=j.add("#d2"); 

    j = jQuery.grep(arr, function(item){ 
     return item != '#d1'; 
    }); 
    j.css("border","1px solid red"); 
}); 
</script> 
+0

¿Por qué? Parece un poco complejo :) – jensgram

+0

Por expansibilidad, por supuesto, en caso de que el filtro tenga que ser más complejo. Pero estoy de acuerdo, para este caso particular, la respuesta elegida funciona bien. –

1
<div id="d1">d1</div> 
<div id="d2">d2</div> 
$(function(){ 
    var j=$("#d1, #d2"); 
    j.filter(":not(#d1)").css("border","1px solid red"); 
}); 
1

El problema es, que los métodos de manipulación (por ejemplo add()) no manipulan el objeto (colección) en el lugar pero devuelve una colección alterada. Por lo tanto, es necesario asignar el valor de retorno de remove()not() de nuevo a j:

j.remove("#d1");//not this... 

Debe ser

j = j.not("#d1");//not this... 

remove() vs not()

remove() elimina el conjunto coincidente del DOM (no del conjunto), mientras que not() elimina el conjunto coincidente de la coincidencia dada sin modificar el DOM. Creo que estás buscando not().

0

tratar el siguiente código:

j.find("#d1").remove(); 

si no:

j.filter("#d1").remove(); 
Cuestiones relacionadas