zoukankan      html  css  js  c++  java
  • Zepto源码笔记(三)

    ps:本文中"组装成成数组"指的是若元素个数大于1则返回数组,若元素只有1个则返回元素本身

    以下函数是$.fn该对象的方法

    ready(callback)

    通过readyRE正则表达式检测document.readyState是否符合,若符合则调用回调函数;

    否则添加DOMContentLoaded事件处理函数以调用回调函数

    each(callback)

    因为Z元素集合本身就是类数组,不需要像$.each(elements,callback)一样先判断elements是否类数组,所以使用原生的Array.every来遍历更好

    filter(selector)

    若selector是函数,则返回this.not(this.not(selector)),双重否定即肯定

    否则,调用Array.filter来对this中每个元素调用zepto.matches并返回该结果

    not(selector)

    创建ndoes数组

    若selector是函数,则对this中每个元素调用该函数,若返回值为false,则向nodes中添加该元素

    否则,定义exludes,若selector是字符串,则excludes=this.filter(selector),

                                    若selector是类数组切selector.item是function,则excludes=slice.call(selector),

                                    否则excludes=$(selector)

               判断this中每个元素是否在excludes中,若不存在于excludes中,则将该元素添加至nodes中

    返回 $(nodes) 

    find(selector)

    定义result

    若selector是对象,则$(selector),并对该对象进行过滤:this中某一个元素含有该节点(节点指的是$(selector)的一个元素),result即为过滤后的集合

    this.length == 1,result = $(zepto.qsa(this[0], selector))

    否则, result = this.map(function() { return zepto.qsa(this, selector) }), 类似于第二种情况,只不过此时要遍历this中每个元素

    closest(selector, context)

    定义node = this[0], collection = false

    若selector是object,则 collection = $(selctor)

    当 node为真 且 node不符合选择器时,

    node = node !== context && !isDocument(node) && node.parentNode

    就是说node一旦等于context或是document,则令node=false;其余情况下 node = node.parent

    返回 $(node)

    parents(selector)

    获取this的所有元素的所有祖先存放于ancestors中

    对ancestors进行过滤,并返回该结果

    parent(selector)

    获取this的所有父节点并组装成成数组然后进行uniq化,然后根据selector进行过滤

    children(selector)

    获取this的所有子节点并组装成成数组 ,然后根据selector进行过滤

    contents()

    获取this的所有childNodes(包括文本节点)并组装成成数组

    siblings

    获取this的父节点下非this的所有子节点并组装成数组(也就是this的兄弟节点数组),然后根据selector进行过滤

    empty

    令this下每个元素的innerHTML = '',返回this

    pluck(property)

    获取this下每个元素(el)的el[property],并组装成数组作为返回值

  • 相关阅读:
    学习Bitmap,处理“海量”数据
    学习Trie树,处理“海量”数据
    学习KMP算法
    学习堆与栈内存分配方式
    学习继承和虚析构函数
    学习处理数组子集和的算法
    学习类中的const和static类型
    学习利用动态规划解决若干问题
    【MySQL】MySQL忘记root密码解决方案
    【API】短信通106端口验证短信的实现
  • 原文地址:https://www.cnblogs.com/willkan/p/3230255.html
Copyright © 2011-2022 走看看