从jQuery对象中删除项目

jQuery可以很容易地从DOM中删除节点。 但是,你如何从jQuery对象中删除一些东西?

如果您正在讨论从jQuery对象中删除节点,请使用filternot函数。 看到这里更多 。

如何使用filter

 var ps = $('p'); //Removes all elements from the set of matched elements that do //not match the specified function. ps = ps.filter(function() { //return true to keep it, false to discard it //the logic is up to you. }); 

要么

 var ps = $('p'); //Removes all elements from the set of matched elements that //do not match the specified expression(s). ps = ps.filter('.selector'); 

如何使用not

 var ps = $('p'); //Removes elements matching the specified expression //from the set of matched elements. ps = ps.not('.selector'); 

如前所述, $.filter()是过滤数据的好select。 还要注意, jQuery对象可以像数组一样处理 ,因此可以使用像splice()这样的数组方法。

 var people = $(".people"); people.splice(2,1); // Remove 1 item starting from index 2 
 <ul> <li class="1" /> <li class="2" /> <li class="3" /> <li class="4" /> <li class="5" /> </ul> 

Filter迭代jQuery对象集合。 对于每个元素:在filter()返回true以将当前项保存在jQuery对象集合中。 返回false从jQuery对象集合中移除当前对象。

 $("li").filter(function () { if (this.className == "1" || this.className == "2") return true; return false; }); 

在这种情况下; 由filter()执行的匿名函数将为具有类1和/或2的列表项返回true,然后从jQuery对象集合中移除最后三个列表项。

一个实际的例子:

 <ul> <li class="1" /> <li class="2" /> <li class="3" /> <li class="4" /> <li class="5" /> </ul> 

这段代码将一个类(“蓝色”)添加到无序列表中。 然后突出显示前两个列表项。 然后将一个点击处理程序附加到前两个列表项:

 $(function () { $("ul").addClass("blue").find("li").filter(function () { if (this.className == "1" || this.className == "2") return true; return false; }).addClass("highlight").click(function () { alert("I am highlighted!"); }); });