学习要点:
1.基本过滤器
2.内容过滤器
3.可见性过滤器
4.子元素过滤器
5.其他方法
过滤选择器简称:过滤器。它其实也是一种选择器,而这种选择器类似与 CSS3(http://t.mb5u.com/css3/)里的伪类,可以让不支持 CSS3 的低版本浏览器也能支持。和常规选择器一样,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 不含 class 为 red 的元素
注意::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'); //选择子元素含有 class 是 red 的元素
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:only-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)); //true,DOM 对象,同上 $('.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 的 class 为 red 的元素 $('li').filter('.red, :first, :last').css('background','#ccc'); //增加了首尾选择
//特殊要求函数返回
$('li').filter(function () { return $(this).attr('class') == 'red' && $(this).attr('title') == '列表 3'; }).css('background', '#ccc');
相关推荐
在本章“第04章 过滤选择器(下)”中,我们将深入探讨JavaScript中的过滤选择器,这是Web开发中的一个重要概念,特别是在处理DOM元素时。过滤选择器允许我们从一组匹配的元素中进一步筛选出特定的元素,这在动态...
在本章中,我们将深入探讨JavaScript中的过滤选择器,这些选择器在开发高效、动态的Web应用程序时扮演着至关重要的角色。过滤选择器允许我们从DOM(文档对象模型)树中精确地挑选出符合特定条件的元素,从而实现对...
本文将深入探讨“JQ子元素过滤选择器”,这是一个强大的功能,可以帮助开发者精确地定位到DOM树中的特定子元素,进而进行进一步的操作。通过学习和掌握这些选择器,可以提高开发效率,使代码更加简洁易读。 首先,...
#### 内容过滤选择器 1. **:first**: 选取第一个元素,等同于`first()`方法。 2. **:last**: 选取最后一个元素,等同于`last()`方法。 3. **:not(selector)**: 选取不匹配selector的所有元素。 4. **:even**: 选取...
过滤选择器用于进一步筛选已选元素集合,包括基于属性、索引位置、可见性等进行选择。例如: - `$(".myClass:even")` 选择所有偶数索引的`myClass`类元素 - `$(".myClass:gt(2)")` 选择所有索引大于2的`myClass`类...
**JQ基本过滤选择器详解** 在Web开发中,jQuery(简称JQ)是一个非常流行的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。其中,选择器是jQuery的核心功能之一,它允许我们高效地选取DOM...
基本过滤选择器是jQuery选择器的重要组成部分,它能帮助我们根据特定的规则来筛选出所需的DOM元素。在本文中,我们将重点介绍基本过滤选择器,并通过实例来分析其用法。 首先,我们来了解基本过滤选择器的含义。...
过滤选择器是其中的一个重要分支,它进一步细分为六种类型,包括简单过滤选择器、内容过滤选择器、可见性过滤选择器、属性过滤选择器、子元素过滤选择器和表单对象属性过滤选择器。 接下来,我们将重点介绍内容过滤...
在jQuery中,过滤选择器是用于从一组匹配的元素中进一步筛选出特定元素的重要工具。在给定的示例中,我们看到多个基本过滤选择器的使用,它们分别是`:first`、`:last`、`:not`、`:even`、`:odd`、`:eq`、`:gt`以及`:...
以上介绍的四个jQuery内容过滤选择器,每个选择器都有其独特的用途。在实际开发中,它们可以结合其他选择器或方法使用,以便于开发者进行更精确的DOM操作。需要注意的是,内容过滤选择器在使用时应确保传入的参数...
内容过滤选择器和子元素过滤选择器是jQuery选择器的两个重要类别,它们允许开发者更精确地定位和操作DOM元素。以下是对这两个类别及其相关选择器的详细解释和实例分析。 一、jQuery内容过滤选择器 1. `:contains...
在本讲中,我们将深入探讨jQuery的选择器和过滤器,这些工具是jQuery强大功能的核心部分。 首先,jQuery选择器是用于选取HTML元素的关键机制。它们借鉴了CSS选择器的语法,并在此基础上扩展了一些额外的功能,使得...
4. **属性过滤选择器** - 用于选择具有指定属性的元素。 - 实例: `$("input[type='text']")` 获取所有`type`属性为`text`的`<input>`元素 5. **子元素过滤选择器** - 用于选择特定类型的子元素。 - 实例: `$(...
4. **属性过滤选择器** - `[attribute]`选取具有特定属性的元素。 - `[attribute=value]`和`[attribute!=value]`根据属性值进行匹配或排除。 - `[attribute^=value]`、`[attribute$=value]`和`[attribute*=value]...
在jQuery中,选择器分为多种类型,包括基本选择器、层次选择器、过滤器选择器以及内容和属性过滤器。下面我们将详细探讨这些选择器的用法和实例。 1. **基本选择器**: - `#id`:通过ID选择器选取具有特定ID的元素...
3. 过滤选择器:包括简单过滤、内容过滤、可见性过滤、属性过滤、子元素过滤等,如`$("p:first")`(第一个`<p>`元素)、`$("tr:even")`(偶数行的`<tr>`元素)、`$("input:enabled")`(所有启用的`<input>`元素)等...
过滤选择器提供丰富的条件筛选,使选择更具针对性。 1. **基本过滤选择器** - `:first`和`:last`分别选取序列中的第一个和最后一个元素,如`$('span:first')`将首个`<span>`元素变为红色。 - `:not(selector)`...
在jQuery中,子元素过滤选择器是一种强大的工具,它允许我们根据特定的条件来选取DOM树中的子元素。这些选择器基于子元素与其父元素之间的关系进行操作,从而帮助我们更加精确地定位和操作DOM结构。本文将深入探讨...