2010-06-24 2 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, но как я могу удалить #d1 из j?

j.remove() не работает, потому что она удаляет #d1 и j.length все еще 2.

Спасибо всем! :)

+2

@pranay_stacker: '$()' –

ответ

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

+0

@Reigel Спасибо для добавления демо –

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

+0

Для расширяемости, конечно, в случае, когда фильтр когда-либо должен быть более сложным. Но я согласен, что в этом конкретном случае выбранный ответ действительно трюк. –

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(); 
Смежные вопросы