2010-06-24 12 views
7

Code:Wie entferne ich ein Element vom jQuery-Objekt?

<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> 

Ich habe j.add() verwendet, um Elemente zu j hinzufügen, aber wie kann ich #d1 von j entfernen?

j.remove() nicht funktioniert, weil es die #d1 und j.length noch alle 2.

Dank entfernt sein! :)

+2

@pranay_stacker: '$()' –

Antwort

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 ... und ich fügte eine Demo .. – Reigel

+0

@Reigel Dank zum Hinzufügen einer Demo –

1

Verwenden der jQuery grep() Funktion:

<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

Warum? Es scheint ein wenig komplex :) – jensgram

+0

Für Erweiterbarkeit natürlich, falls der Filter jemals komplexer sein muss. Aber ich stimme zu, für diesen speziellen Fall ist die gewählte Antwort genau richtig. –

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

Das Problem besteht darin, dass die Manipulationsmethoden (zB add()) manipulieren das Objekt nicht (Sammlung) in-Place aber gibt eine geänderte Sammlung zurück. So müssen Sie den Rückgabewert von remove()not() zurück zu j zuzuweisen:

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

sein sollte

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

remove() gegen not()

remove() entfernt die übereinstimmende Menge aus dem DOM (nicht die Menge), während not() die übereinstimmende Menge aus der angegebenen Übereinstimmung entfernt und das DOM unverändert lässt. Ich denke du suchst nach not().

0

versuchen, den folgenden Code:

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

wenn nicht:

j.filter("#d1").remove(); 
Verwandte Themen