2010-06-24 35 views
7

代碼:如何從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> 

我用j.add()添加元素,以j,但我怎麼從j刪除#d1

j.remove()是不工作的,因爲它消除了#d1j.length仍然是2

謝謝大家! :)

+2

@pranay_stacker:'$()' – 2010-06-24 09:03:31

回答

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 ......我增加了一個演示.. – Reigel 2010-06-24 09:10:27

+0

@Reigel謝謝添加演示 – 2010-06-24 09:10:46

1

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

爲什麼?看起來有點複雜:) – jensgram 2010-06-24 09:17:46

+0

對於可擴展性當然,以防過濾器需要更復雜。但我同意,對於這種特殊情況,所選擇的答案只是很好。 – 2010-06-24 09:41:29

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

的問題是,該操作方法(如add())不操作對象。 (收藏)就地返回改變的集合。因此,你需要從remove()not()後面的返回值賦給j

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

應該

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

remove()not()

remove()從DOM(不是集合)中刪除匹配集合,而not()從給定匹配中刪除匹配集合,使DOM保持不變。我認爲你正在尋找not()

0

試試下面的代碼:

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

如果不是:

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