从jQuery对象中删除项目
jQuery可以很容易地从DOM中删除节点。 但是,你如何从jQuery对象中删除一些东西?
如果您正在讨论从jQuery对象中删除节点,请使用filter
或not
函数。 看到这里更多 。
如何使用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!"); }); });