先展示init函数,由于笔记本屏幕太小,删掉了部分源码注释,才能在一屏内截图。

当我们调用$()的时候,便会直接调用zepto.init()生成zepto对象,跟jquery生成jquery对象类似。可以在插件中进行覆盖。

定义变量dom

分为5种情况,逐个进行判断。

1、未传入选择器,即没有传入任何参数的情况,直接返回一个空的zepto对象。

2、如果传入字符串类型的选择器,即传入的是css选择器

清除selector参数的前后空格,selector = selector.trim()

然后区分三种不同情况下的字符串选择器:

  a). 文档片段,如$('<div></div>'),则调用zepto.fragment()函数创建dom对象,并赋值给变量dom,关于zepto.fragment(),见上文。

  b). 如果存在上下文,则在上下文内查找符合条件的dom元素

  c). 传入常规css选择器的情况,调用zepto选择器方法zepto.qsa(document, selector)查找符合条件的dom元素,赋值给变量dom。关于 zepto.qsa(),后面会分析到。

3、如果selector参数传入的是函数的情况,直接返回$(document).ready()方法,只有一种情况$(function(){})

4、如果传入的参数本身就是zepto对象,则直接返回其自身。

举个传入zepto对象作为参数的例子:

5、不是上述4种情况的其他:

对此也需要分开讨论

  a). 如果选择器是以节点数组形式传递,过滤null、undefined,赋值给变量dom

  

  b). 传入的参数类型就是object ,将其以数组形式赋值给变量dom

  

  c). 预防用户以new String()方式输入html文档片段

  

  在某些情况下,用户可能使用如下方式输入

  

  d). 这两天依然属于预防机制,不需要更多解释

  

将查询结果转换成zepto对象并返回,return zepto.Z(dom, selector)。

 

最新文章

  1. 【BZOJ1002】【FJOI2007】轮状病毒(生成树计数)
  2. Unity手游之路&lt;八&gt;自动寻路Navmesh之入门
  3. PHP json_encode / json_decode
  4. Silverlight管理系统源代码(SilverlightOAFlame开发框架主要提供二次开发)
  5. SAM4E单片机之旅——17、通过UART进行标准IO
  6. UVA 12377 Number Coding --DFS
  7. li标签行内元素高度及居中
  8. ios 中使用SBJson拼接和解析json
  9. 【HDOJ】4374 One hundred layer
  10. 【HTML】Intermediate5:Definition Lists
  11. SRM 440(1-250pt, 1-500pt)
  12. Python修饰器
  13. Hibernate问题之&#39;hibernate.dialect&#39; not set
  14. iOS抽奖程序
  15. iOS 英语
  16. reference to &#39;map&#39; is ambiguous|
  17. PAT 甲级 1035 Password (20 分)
  18. linux(Redhat7)安装Apache
  19. torchvision
  20. R中双表操作学习[转载]

热门文章

  1. Properties类的用法
  2. 如何在 .Net Framework 4.0 项目上使用 OData?
  3. ibatis 灵活的配置文件
  4. 【POJ】1062 昂贵的聘礼(spfa)
  5. HDU 4647 Another Graph Game(贪心)
  6. QLineEdit 使用方法
  7. Spark - RDD(弹性分布式数据集)
  8. android之OptionsMenu
  9. POJ 2533 Longest Ordered Subsequence(LIS模版题)
  10. dragloader.js帮助你在页面原生滚动下实现Pull Request操作