jQuery 过滤

选择器选中的常常是一大组元素,而我们可能只想要其中的第一个、最后一个、第 N 个,或符合某条件的那几个。jQuery 的过滤方法 first()、last()、eq()、filter()、not() 专门做这类收窄。

演示用的列表:

<ul id="list">
    <li>苹果</li>
    <li class="hot">香蕉</li>
    <li>橘子</li>
    <li>西瓜</li>
</ul>

first() 与 last():首尾元素

first() 返回匹配集合中的第一个元素,last() 返回最后一个:

$("#list li").first().css("background", "yellow"); // 效果:苹果变黄
$("#list li").last().css("background", "green");   // 效果:西瓜变绿

eq():按索引取元素

eq(数字) 按索引(从 0 开始)取第 n 个元素,支持负数(从末尾倒数):

$("#list li").eq(1).css("font-weight", "bold"); // 效果:索引 1 = 香蕉加粗
$("#list li").eq(-1).css("color", "red");        // 效果:-1 表示倒数第 1 个 = 西瓜变红

eq(0) 等价于 first();eq(-1) 等价于 last()。

filter():按条件筛选

filter(选择器或函数) 保留符合条件的元素:

$("#list li").filter(".hot").css("background", "orange");
// 效果:带 class="hot" 的香蕉背景变橙

$("#list li").filter(function (index) {
    return index % 2 === 0; // 保留索引为偶数的元素
}).css("color", "blue");
// 效果:索引 0、2 的苹果、橘子变蓝

函数形式可写复杂判断,回调里 this 是当前 DOM 元素。

not():排除指定元素

not() 与 filter() 相反,剔除符合条件的,留下其余的:

$("#list li").not(".hot").css("color", "gray");
// 效果:香蕉被排除,苹果、橘子、西瓜变灰

切片类方法对比

方法作用示例结果(对 4 个 li)
first()取第 1 个苹果
last()取最后 1 个西瓜
eq(n)取第 n+1 个eq(1) → 香蕉
filter(".hot")保留匹配香蕉
not(".hot")排除匹配苹果、橘子、西瓜

小结

过滤方法负责"从大集合里挑小集合":首尾用 first/last、按位置用 eq、按条件用 filter、反选排除用 not。配合遍历使用,就能精确锁定任何目标元素。

笔记加载中…