天天看点

jquery中closest()与parents()的方法区别分析总结

在jquery中parents()查找父级元素删除的时候,发现它不包含根元素,于是用了closest(),效果不错,下面我给大家具体的介绍

closest() 方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 dom 树向上

参数selector为字符串值,用以过滤匹配元素的择器表达式

参数context可选,作为待查找的 dom 元素集或者文档

closet(selector,context)中context参数的用法:从当前元素开始遍历到context元素结束,若不存在context参数遍历到根结点;由此可见使用context参数可以提高查询效率

.parents() 和 .closest() 方法类似,它们都用于沿 dom 树向上遍历,匹配元素的选择器字符串。两者之间的差异尽管微妙,却很重要:

.closest()

.parents()

从当前元素开始

从父元素开始

沿dom树向上遍历直到找到已应用选择器的一个匹配为止

沿dom树向上遍历直到文档的根元素为止,将每个祖先元素添加到一个临时的集合;如果应用了选择器,则会基于该选择器对这个集合进行筛选

返回包含零个或一个元素的 jquery 对象

返回包含零个、一个或多个元素的 jquery 对象

先看下面的示例:演示如何通过 closest() 完成事件委托。当被最接近的列表元素或其子后代元素被点击时,会切换黄色背景

1、当鼠标点击“you can also”时颜色出现变化。这是因为closest是从当前元素开始向上遍历的。而不同于parents()方法,是从当前元素的父元素开始向上遍历

2、当点击click me!时,颜色也会变化。这同样经过上面步骤,从当前元素向上匹配,只不过<b>不符合条件,再往上时遇见了</b>

继续阅读