首页 > 语言 > 关键词  > JQUERY最新资讯  > 正文

jQuery中10个非常有用的遍历函数

2010-03-30 14:13 · 稿源:站长之家Chinaz.com

使用jQuery,可以 很容易的选择HTML元素。但有些时候,在HTML结构较为复杂时,提炼我们选择的元素就是一件麻烦的事情。在这篇教程中,我们将探讨十种方 法去精炼和扩展我们将要操作的集合。

HTML

首先,让我们看看下图所示的简单的页面,通过这个教程我们将选择这些元素。

div.container是包裹元素;

div.photo、div.title、div.rating是div.container的直接子级;

每个div.star是div.rating的子级;

当div.satr的class为“on”时, 它是一个完整的star。

为什么要遍历?

“为什么我们要进一步提炼一系 列元素,难道是jQuery选择语法不够 强大?”

好,让我们从示例开始。在上面提到的网页中,当一个star被 点击时,我们需要给它以及左边的每个star添加class“on”。与此同时,我们要改变所有star父元素的背景颜色,因此,我们的代码如下:

$('.star').click(function(){

$(this).addClass('on');

// 如何选取当前对象的 父元素?

// 如何获得当前star左侧所有的star?

});

在第二行,我们得到了我们点击的当前对象。但是,如 何得到stars的父级?即div.rating。但是,在一个页面中,有很多div.rating。哪一个是我们想要的?如何获得“this”左边所有的star?

可喜的是,jQuery允 许我们基于这些基层关系,在现存集合的基础上获得新的元素集合。而这些正是遍历函数发挥作用的地方。

1、children

这个函数得到一组元素的直接子级。

在很多情况下会很方便,看看下面这张图:

开始的时候容器中的star全部被选择;

给children()传递一个选择表 达式将选择结果缩小至选中的star;

如果chilidren()每接受任何 参数,将返回所有直接子级;

不返回孙级元素。

2、filter

这个函数通过传递的选择表达式从一个集合中过滤元素。任何不匹配这个表达式的元素将从选择的集合中移除。

下面的这个例子直截了当。从 5个star中过滤出class为“on”的star。

3、not

与filter恰恰相 反,not()从集合中移除匹配的元素。

看下面这个例子。偶数列的star从 选择集合中移除,留下的是奇数行的star。

“ 注意:'Even'和'odd'选择器是从0开始的,从0开 始计数,不是从1。”

4、add

如果我们想在集合中增加一些元素怎么办?add()函 数正是做这件事的。

同样简单明了,photo盒 子被添加到集合中。

5、slice

有时候,我们需要根据元素在集合的位置获取集合的子集。sliece()正是做这个的。

第一个参数是从零开始的第一个元素的位置,它包含在返回的片段中;

第二个参数是从零开始的第一个元素的索引。不包含在返回的片段中。如果省略,将延伸至集合的末尾;

所以,slice(0,2)将选取前两 个star。

6、parent

parent()函数选取一系列元素的直接父级。

正如下图所示,第一个star的 直接父级被选中。非常方便,应当指出,它仅仅返回直接父级,为什么很奇特?因为没有祖父元素或祖先元素被选中。

7、parents

这是复数形式,parents()选 择集合的所有祖先元素。我的意思是所有祖先元素包括直接父级到“body”和“html”元素。所以最好通过传递表达式缩小选择结果。

通过给parents()传 递.container参数,div.container将被选中,它实际上第一个star的祖父。

8、siblings

这个函数选择一组元素的所有兄弟姐妹,传递一个表达式可以筛选结果。

看看这个例子:

谁是第一个star的兄弟节点?其它的四个,对 不?

如图所示,“odd”的节点被选中。索 引是从零开始的,看看下面star的红色数字。

9、prev & prevAll

prev()函数选择前一个兄弟节点。prevAll()选择一个元素集合前面所有的兄弟节点。
如 果你正在构建一个星级部件,这将相当方便。第三个star前面的兄弟节 点被选中。

10、next & nextAll

这些函数与prev和prevAll工作方式相同,不过它选择的是下一个兄弟姐妹。

结论

最后,让我们来看看如何利用这些函数来解决现实世界中令我们头痛的问题。

$('.star').click(function(){

$(this).addClass('on');

// 如何取得当前对象的 父级?

$(this).parent().addClass('rated');

// 如何获得当前对象左 侧的star?

$(this).prevAll().addClass('on');

$(this).nextAll().removeClass('on');

});

这就是这篇教程中早期提到的问题,对吗?在这几行代码中我们使用了这几个遍历函数。

在第5行,看看parent()函数,啊哈,真简单。

在第8行和9行,prevAll()和nextAll().选择填充的star和 空的star。

现在,遍历函数是做么的方便。当在一起使用时,它们将更加强大。也就是说,一个函数的输出是另一个函数的输 入,它们是链式的。

举报

  • 相关推荐
  • 数据库就要选华为云!

    文章讲述了作者10年前创业失败的经历,反思当时过度投入高端服务器和技术架构,却忽视了业务实际需求。如今随着云计算、大数据等技术发展,数据库架构设计更强调弹性、可靠性和智能化。游戏行业作为典型高并发场景,对数据库提出实时响应、高可用等严苛要求。华为云TaurusDB作为新一代云原生数据库,具备高性能(QPS达百万级)、弹性扩展(1写15读节点)、高可靠性(跨区部署、RPO为0)等优势,完美适配游戏行业需求。其核心技术包括计算存储分离、并行执行和NDP近数据处理,解决了传统MySQL架构的复制延迟等问题。文章建议企业选择与业务协同成长的数据库平台,而非从零搭建架构。

  • 后信创时代,融合数据库成为国产数据库的新锚点

    7月15日,中电科金仓发布四款AI时代数据库核心产品:KES V92025融合数据库、KEMCC统一管控平台、云数据库一体机(AI版)和KFS Ultra智能数据集成平台。公司提出"融合数据库"战略,通过底层架构重构实现多模态数据统一处理,支持向量检索、语义计算等AI场景需求。金仓同步启动"金兰组织2.0"计划,联合产学研力量构建国产数据库生态。此次发布标志着国产数据库从"替代兼容"转向"定义未来",在AI驱动的技术变革中与国际厂商同步起跑。预计到2028年,中国数据库市场规模将达930亿元,年复合增长率12.23%。

  • 赛迪顾问:中国数据库市场达371.6亿,核心业务系统需求释放

    2024年全球数据库管理系统(DBMS)市场规模达627.3亿美元,中国市场规模达371.6亿元,占平台软件市场的42.1%。报告显示国产数据库厂商市场份额持续提升,电科金仓在关键应用领域销售套数保持第一,并在医疗与交通行业位居中国厂商销量首位。随着政策引导和技术创新,国产数据库正加速渗透核心业务系统,事务型数据库领域增长显著。未来三年行业信息化进程将提速,预计2027年中国数据库市场规模将达518.8亿元。国产数据库正从"替代"走向体系化创新,在AI等新技术驱动下重构技术版图。

  • 从“不敢替”到“能平替”:国产数据库如何逆袭Oracle核心腹地?

    文章讲述了一位资深数据库管理员老邓对国产数据库替代Oracle的担忧与转变。老邓最初对国产数据库持怀疑态度,担心应用改造难度大、数据迁移复杂、系统停机时间长等问题。但在技术选型会上,一家国产数据库厂商展示了六大核心解决方案:高兼容性实现零改造、全自动迁移工具确保数据一致性、柔性迁移方案避免停机、基于真实负载的测试工具、双轨并行随时回退机制,以及媲美Oracle的性能表现。最终老邓被金仓数据库的技术实力所折服,项目成功上线运行稳定。文章展现了国产数据库在核心技术上的突破,能够满足关键业务系统的替代需求。

  • 冷建全的“冷”思考:AI狂潮下,金仓数据库为何把“融合”刻进基因?

    7月15日,中国电科旗下金仓数据库以"融合进化 智领未来"为主题发布全新战略,提出未来数据库应"以融合为体,以AI为用"。金仓数据库高级副总裁冷建全指出,国产数据库在AI时代的突围路径是构建"五个一体化"融合能力体系,而非简单追逐热点。金仓数据库通过多语法体系兼容、多集群架构支持、多模型数据存储、多应用场景处理、开发运维一体化五大能力,显著降低国产化替代总成本。在AI应用方面,金仓重点布局向量计算和智能运维,其向量引擎已支持多种数据类型,并应用于公共安全、电力巡检等领域。同时推出的"K宝"AI助手可提供智能运维支持,故障预警准确率达98%以上。金仓强调"融合是根本,AI是赋能",通过夯实数据库内核能力,为各行业数字化转型提供稳定高效的数据基础设施支撑。

  • JS 框架安全报告:jQuery 下载次数超过 1.2 亿次

    ​尽管 JavaScript 库 jQuery 仍被使用,但它已不再像以前那样流行。根据开源安全平台 Snyk 统计,目前至少十分之六的网站受到 jQuery XSS 漏洞的影响,甚至用于扩展 jQuery 功能的 jQuery 库还引入了更多的安全问题。

  • 流行 jQuery 插件 0day 漏洞被利用至少三年

    利用一个流行 jQuery 插件的 0day 漏洞植入 Web shells 控制存在漏洞的 Web 服务器。这个插件是 jQuery File Upload,

  • 网站如何做到完全不需要使用jQuery

    jQuery是现在最流行的JavaScript工具库。虽然jQuery很受欢迎,但是它臃肿的体积也让人头痛不已。jQuery 2.0的原始大小为235KB,优化后为81KB;如果是支持IE6、7、8的jQuery 1.8.3,原始大小为261KB,优化后为91KB。

  • jquery原理的简单分析,扒开jquery的小外套

    最近LZ还在消化系统原理的第三章,因此这部分内容LZ打算再沉淀一下再写。本次LZ和各位来讨论一点前端的内容,其实有关jquery,在很久之前,LZ就写过一篇简单的源码分析。只不过当时刚开始写博客,写的相对来讲比较随意,直接就把源码给贴上来了,尽管加了很多注释,但还是会略显粗糙。

  • jQuery入门简介

    |seektanjQuery是最近比较火的一个JavaScript库,从del.icio.us/上相关的收藏可见一斑。