2010-06-24 57 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();