[jQuery知识]jQuery之知识三-过滤器

一.基本过滤器

过滤器主要通过特定的过滤规则来筛选所需的 DOM 元素,和 CSS 中的伪类的语法类

这里写图片描述

$('li:first').css('background', '#ccc'); //第一个元素 $('li:last).css('background', '#ccc'); //最后一个元素$('li:not(.red)).css('background', '#ccc'); //非 class 为 red 的元素$('li:even').css('background', '#ccc');//索引为偶数的元素


$('li:odd).css('background', '#ccc'); //索引为奇数的元素$('li:eq(2)).css('background', '#ccc');  //指定索引值的元素$('li:gt(2)').css('background', '#ccc'); //大于索引值的元素$('li:lt(2)').css('background', '#ccc'); //小于索引值的元素$(':header').css('background', '#ccc'); //页面所有 h1 ~ h6 元素

注意::focus 过滤器,必须是网页初始状态的已经被激活焦点的元素才能实现元素获取。 而不是鼠标点击或者 Tab 键盘敲击激活的。

$('input').get(0).focus(); //先初始化激活一个元素焦点 $(':focus').css('background', 'red'); //被焦点的元素

jQuery 为最常用的过滤器提供了专用的方法,已达到提到性能和效率的作用:

$('li').eq(2).css('background', '#ccc'); //元素 li 的第三个元素,负数从后开始
$('li').first().css('background', '#ccc');//元素 li 的第一个元素
 $('li').last().css('background', '#ccc'); //元素 li 的最后一个元素
 $('li').not('.red').css('background', '#ccc');//元素 li 不含 classred 的元素

注意::first、:last 和 first()、last()这两组过滤器和方法在出现相同元素的时候,first 会 实现第一个父元素的第一个子元素,last 会实现最后一个父元素的最后一个子元素。所以, 如果需要明确是哪个父元素,需要指明:

$('#box li:last').css('background', '#ccc'); //#box 元素的最后一个 li
$('#box li).last().css('background', '#ccc'); //同上

二.内容过滤器

内容过滤器的过滤规则主要是包含的子元素或文本内容上。
这里写图片描述

//选择元素文本节点含有 ycku.com 文本的元素
$('div:contains("ycku.com")').css('background', '#ccc');
$('div:empty').css('background', '#ccc'); //选择空元素
$('ul:has(.red)').css('background', '#ccc'); //选择子元素含有 class 是 red 的元素
$(':parent').css('background', '#ccc');//选择非空元素

jQuery 提供了一个 has()方法来提高:has 过滤器的性能:

$('ul').has('.red').css('background', '#ccc'); //选择子元素含有 classred 的元素

jQuery 提供了一个名称和:parent 相似的方法,但这个方法并不是选取含有子元素或文本 的元素,而是获取当前元素的父元素,返回的是元素集:

$('li').parent().css('background', '#ccc'); //选择当前元素的父元素
$('li').parents().css('background', '#ccc'); //选择当前元素的父元素及祖先元素
$('li').parentsUntil('div').css('background', '#ccc'); //选择当前元素遇到 div 父元素停止

三.可见性过滤器

可见性过滤器根据元素的可见性和不可见性来选择相应的元素。
这里写图片描述

$('p:hidden).size(); //元素 p 隐藏的元素 $('p:visible').size(); //元素 p 显示的元素

注意::hidden 过滤器一般是包含的内容为:CSS 样式为 display:none、input 表单类型为 type=”hidden”和 visibility:hidden 的元素。

四.子元素过滤器

子元素过滤器的过滤规则是通过父元素和子元素的关系来获取相应的元素。
这里写图片描述

$('li:first-child').css('background', '#ccc');//每个父元素第一个 li 元素
 $('li:last-child').css('background', '#ccc');//每个父元素最后一个 li 元
 $('li:nth-child(odd)').css('background', '#ccc'); //每个父元素只有一个 li 元素
 $('li:nth-child(even)').css('background', '#ccc');//每个父元素奇数 li 元素 
 $('li:nth-child(2)').css('background', '#ccc');//每个父元素第三个 li 元素

五.其他方法

jQuery 在选择器和过滤器上,还提供了一些常用的方法,方便我们开发时灵活使用。
这里写图片描述
这里写图片描述

$('.red').is('li');//true,选择器,检测 class 为是否为 red
 $('.red').is($('li')); //true,jQuery 对象集合,同上
 $('.red').is($('li').eq(2)); //true,jQuery 对象单个,同上
 $('.red').is($('li').get(2));//trueDOM 对象,同上
  $('.red').is(function () {//true,方法,同上
return $(this).attr('title') == '列表 3';//可以自定义各种判断
}));

$('li').eq(2).hasClass('red');//和 is 一样,只不过只能传递 class
$('li').slice(0,2).css('color','red');//前三个变成红色

注意:这个参数有多种传法和 JavaScript 的 slice 方法是一样的比如:slice(2),从第三个始到最后选定;slice(2,4),第三和第四被选定;slice(0,-2),从倒数第三个位置,向前选定 所有;slice(2,-2),前两个和末尾两个未选定。

$("div").find("p").end().get(0);//返回 div 的原生 DOM
 $('div').contents().size();//返回子节点(包括文本)数量
$('li').filter('.red').css('background','#ccc');
$('li').filter('.red, :first, :last').css('background','#ccc'); //增加了首尾选择 //特殊要求函数返回
$('li').filter(function () {
return $(this).attr('class') == 'red' && $(this).attr('title') == '列表 3'; }).css('background', '#ccc');

请继续看下一章[jQuery知识]jQuery之知识体系

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图解AI

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值