继续包装集过滤的相关函数的介绍,今天介绍与父元素相关的函数,parent, parents, closest, offsetParent

parent

获取对象集合中每个元素的直接父元素。

与上篇文章介绍的next和prev的原理类似,也是获取当前元素的属性,来确定其父元素,即获取parentNode属性。

parents

获取对象集合每个元素所有的祖先元素。如果css选择器参数给出,过滤出符合条件的元素。

定义数组var ancestors = []用于存储获取到的父元素,将选取的对象包装集赋值给nodes,如果当前对象存在,则进行循环遍历,利用$.map的方法对整个包装集循环,并处理每一个节点,如果当前的节点存在父元素,并且当前父节点不是document,而且存储的数组ancestors中,不存在当前的父节点,则将当前的父节点存入数组。返回父节点给nodes,再对父节点进行遍历,不断重复,直到当前的父节点选取到document对象为止。

最后一步是对所保存的ancestors进行按照选择器selector过滤,调用filtered函数,并返回过滤后的结果。

转换成直白的语言就是:

  对选取的对象的所有父节点遍历,并存储,然后对当前对象的父节点再来一次遍历存储所有父节点,一层层网上,直到元素节点为document为止。

cosest

从元素本身开始,逐级向上级元素匹配,并返回最先匹配selector的元素。如果给定context节点参数,那么只匹配该节点的后代元素。

与parents非常类似,但是他并不是返回所有祖先元素,而是返回祖先元素当中最先匹配选择器的祖先元素。

offsetParent:

找到第一个定位过的祖先元素。

定义变量parent = this.offsetParent || document.body

如果parent存在,并且不是根元素,而且parent的position属性为static的话,继续向上寻找父元素,直到选取到祖先元素的position属性不是static的为止。

用直白点的语言讲述parent, parents, closest, offsetParent的用法

parent: 获取选择的包装集复合选择器的直接父元素;

parents:获取选择的包装集的所有符合选择器的祖先元素;

closest:获取选择的包装集的最先匹配选择器的祖先元素;

offsetParent: 选取祖先元素当中最接近包装集本身的定位过的元素。

zepto源码--核心方法8(管理包装集)--学习笔记的更多相关文章

  1. zepto源码--核心方法4(包装)--学习笔记

    主要介绍一下wrap, wrapAll, wrapInner, unwrap方法. wrapAll 在所有匹配元素外面包一个单独的结构.结构可以是单个元素或 几个嵌套的元素,并且可以是html字符串或 ...

  2. zepto源码--核心方法10(位置)--学习笔记

    今天基本上就是zepto学习笔记的最后一篇了,介绍一下有关位置的函数,position, offset, scrollLeft, scrollTop scrollLeft 如果所选取的包装集不存在,则 ...

  3. zepto源码--核心方法(类数组相关)--学习笔记

    从这篇起,在没有介绍到各类插件之前,后面将陆续介绍zepto对外暴露的核心方法.即$.fn={}里面的所有方法的介绍.会配合zepto的API进行介绍. 其实前面已经介绍了几个,如width,heig ...

  4. zepto源码--核心方法9(管理包装集)--学习笔记

    今天介绍的是与子元素相关的函数,children, find, contents children 从源码来看,主要是调用过滤函数filtered对遍历整个包装集返回的children进行过滤. 仔细 ...

  5. zepto源码--核心方法7(管理包装集)--学习笔记

    后面应该会有几篇连续介绍关于zepto包装集的文章.涉及的函数较多,就分别介绍,今天介绍几个使用关系获取包装集的方法.prev, next, first, last, siblings, eq pre ...

  6. zepto源码--核心方法5(文本操作)--学习笔记

    涉及到文本内容的主要有三个函数:html, text, val. 我们已经见过多次,一个函数多种用途的情况,今天这三个函数也不例外,既可以获取内容,也可以设置内容.判断条件就是有没有传入参数,如果没有 ...

  7. zepto源码--核心方法3(属性相关)--学习笔记

    继续$.fn方法 今天主要介绍几个跟属性操作相关的方法attr, removeAttr, prop, data attr 读取或设置dom的属性.如果没有给定value参数,则读取对象集合中第一个元素 ...

  8. zepto源码--核心方法6(显示隐藏)--学习笔记

    在不引入zepto插件模块fx_metho其他ds的情况下,zepto默认的显示隐藏的函数只有show, hide, toggle,这里解释有个前提条件,就是没有引入zepto的fx_methods插 ...

  9. zepto源码--核心方法2(class相关)--学习笔记

    继续上篇,本片主要介绍的是$.fn中与class相关的函数,包括hasClass, addClass, removeClass, toggleClass hasClass: 检查对象集合中是否有元素含 ...

随机推荐

  1. SqlServer事务回滚(2)

    SQL Server 2008中SQL应用系列--目录索引 SQL事务 一.事务概念    事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是 ...

  2. 【原】iOS学习42即时通信之XMPP(1)

    1. 即时通信 1> 概述 即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷,服务提供商也提供了越来越丰富的通讯服务功能 ...

  3. IO中同步、异步与阻塞、非阻塞的区别

    一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如si ...

  4. HDU 3069 (树形DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3069 题目大意:用最少警力,监控一个树,逮住逃犯.即最大警力去一个子树捉人时,确保父点至少被一个警察 ...

  5. Sphinx 配置文件的说明【备忘】

    ## 数据源src1 source src1 { ## 说明数据源的类型.数据源的类型可以是:mysql,pgsql,mssql,xmlpipe,odbc,python ## 有人会奇怪,python ...

  6. Codeforces Round #242 (Div. 2) B. Megacity

    按照半径排序,然后累加人数直到超过百万 #include <iostream> #include <algorithm> #include <cmath> #inc ...

  7. Coder-Strike 2014 - Round 1 D. Giving Awards

    题目的意思是 老板给n个人发工资,x欠y的工资,the joy of person x from his brand new money reward will be much less, 老板想避免 ...

  8. PHP面向对象学习二

    类的继承和应用 继承关键字:extends class1 --extends--->class2 ----extends-->class3 依次被继承,class3拥有class1.cla ...

  9. Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法

    最近在学习SpringMvc开发,有一个提问困扰了很久,就是在Eclipse启动Tomcat需要很长时间,大概要1分多钟. 启动日志: 九月 08, 2016 8:59:01 下午 org.apach ...

  10. JS中常遇到的浏览器兼容问题和解决方法【转】

    今天整理了一下浏览器对JS的兼容问题,希望能给你们带来帮助,我没想到的地方请留言给我,我再加上: 常遇到的关于浏览器的宽高问题: //以下均可console.log()实验 var winW=docu ...