2010-06-24 6 views
7

code:Comment supprimer un élément de l'objet 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> 

Je l'ai utilisé j.add() pour ajouter des éléments à j, mais comment puis-je supprimer #d1 de j?

j.remove() ne fonctionne pas, car il supprime l'alambic être #d1 et j.length 2.

Merci à tous! :)

+2

@pranay_stacker: '$()' –

Répondre

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 ... et j'ai ajouté une démo .. – Reigel

+0

@Reigel Merci pour ajouter une démo –

1

Utilisez la fonction 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

Pourquoi? Il semble un peu complexe :) – jensgram

+0

Pour l'évolutivité bien sûr, dans le cas où le filtre doit être plus complexe. Mais je suis d'accord, pour ce cas particulier, la réponse choisie fait très bien l'affaire. –

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

Le problème est que les procédés de manipulation (par exemple add()) ne manipule pas l'objet (collection) en place mais renvoie une collection modifiée. Ainsi, vous devez attribuer la valeur de retour de remove()not() Retour à j:

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

devrait être

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

remove() contre not()

remove() supprime l'ensemble correspondant du DOM (pas l'ensemble), tandis que not() supprime l'ensemble correspondant du match donné, laissant le DOM inchangé. Je pense que vous cherchez not().

0

essayez le code suivant:

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

sinon:

j.filter("#d1").remove(); 
Questions connexes