文档片段fragment函数默认传递三个参数:

html文档片段字符串

name标签

properties额外添加的属性

函数内部实现过程:

var dom, nodes, container;

中间是将字符串html转换成符合需求的dom,并返回。

if (singleTagRE.test(html)) dom = document.createElement(RegExp.$1);

判断html如果是单标签,直接使用标签名称创建dom元素。

其中的在定义变量时已经预先定义了。并且进行了匹配的获取。

如果不是单标签的话,这里没有使用else,而是通过有没有创建过dom来判断。if(!dom){}

继续判断html类型,

a: 如果是字符串的话,转化为dom元素

b: 如果没有传递标签名称, 则直接从正则表达式捕获的匹配获取

c: 如果标签名称不属于containers的属性名称的话,则将name值修改为'*'

d: 真正的操作流程,

将字符串使用合适的标签包裹起来,并且取得包裹元素的子元素(实际为传入的字符串),并且再删除这些不必要的包裹元素。

最后一个判断,我觉得很强大很贴心的功能,可惜到目前为止,一直没有使用过,不得不说,确实有必要研究一下源码,不然可能永远不会发现这种用法。

就是第三个参数properties,如果传递了properties,并且是以键值对的方式传递的,则将该对象的键值对最为dom对象的属性和属性值赋值给dom对象。

其中也利用了methodAttributes的缓存,避免不断重复读取、设置。

举个例子,证明:

我们在使用ajax回调获取数据之后,一般需要将这些数据拼接到页面上面去,这里就有了该方法的发挥着地

从而避免了我们一个一个属性的添加的麻烦,也使得函数更加清晰明了。

在页面展示的效果

zepto源码--fragment--学习笔记的更多相关文章

  1. zepto 源码 $.contains 学习笔记

    $.contains(parent,node)  返回值为一个布尔值 ==> boolean parent,node我们需要检查的节点检查父节点是否包含给定的dom节点,如果两者是相同的节点,返 ...

  2. zepto源码--init--学习笔记

    先展示init函数,由于笔记本屏幕太小,删掉了部分源码注释,才能在一屏内截图. 当我们调用$()的时候,便会直接调用zepto.init()生成zepto对象,跟jquery生成jquery对象类似. ...

  3. c++ stl源码剖析学习笔记(一)uninitialized_copy()函数

    template <class InputIterator, class ForwardIterator>inline ForwardIterator uninitialized_copy ...

  4. zepto源码--qsa--学习笔记

    zepto内部选择器qsa方法的实现. 简述实现原理: 通过判断传入的参数类型: 如果是'#id',则使用getElementById(id)来获取元素,并且将结果包装成数组形式: 如果是'.clas ...

  5. zepto源码--extend--学习笔记

    对象继承函数: $.extend(){},默认传递一个参数,需要继承的对象目标.函数展示: 最终实现的过程,需要调用工具函数extend,首先分析extend函数. 默认传递三个参数,继承的目标对象- ...

  6. zepto源码--matches--学习笔记

    zepto的第一个函数,zepto.matches: 作用:用来匹配dom元素是否匹配某css selector. 它为后面的一些高级方法的实现提供了基础支持,比如事件代理,parent, close ...

  7. requests源码阅读学习笔记

    0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...

  8. c++ stl源码剖析学习笔记(二)iterator

    ITERATOR 迭代器 template<class InputIterator,class T> InputIterator find(InputIterator first,Inpu ...

  9. c++ stl源码剖析学习笔记(三)容器 vector

    stl中容器有很多种 最简单的应该算是vector 一个空间连续的数组 他的构造函数有多个 以其中 template<typename T> vector(size_type n,cons ...

随机推荐

  1. 资产移动盘点手持机PDA系统

    手持机PDA系统功能 PDA初始化 从后台管理机系统中预先设置的众多操作人员列表中下载当前PDA的使用人员: 系统支持多用户使用同一台PDA情况下的用户认证登陆,每一用户根据后台管理机系统设置与安全管 ...

  2. MVC RenderSection

    简要使用介绍 @RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection(" ...

  3. Travelling

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. storm源码之一个class解决nimbus单点问题【转】

    本文导读: storm nimbus 单节点问题概述 storm与解决nimbus单点相关的概念 nimbus目前无法做到多节点的原因 解决nimbus单点问题的关键 业界对nimbus单点问题的努力 ...

  5. setTimeout()和setInterval() 何时被调用执行

    定义 setTimeout()和setInterval()经常被用来处理延时和定时任务.setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则可以在每隔 ...

  6. javascript继承扩展类方法实现

    javascript没有原生的继承语法,这确实很让人困惑,但是广大人民群从的智慧是无穷的.最近呢,正尝到一点从源码中学习的甜头,不分享一下实在难以平复激动的心情.前不久改造视频播放插件的时候,找到了v ...

  7. ZXing二维码的生成和解析

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法, 现在我简单介绍一下使用Java利用Zxing生成与解析二维码 注意: 二维码的生成需要借助辅助类( ...

  8. CUDA/OpenCL 学习资料

    VS2010 NVIDIA OpenCL 开发环境配置 CUDA 在线课程 [经典培训] 全球首套中文CUDA 教程-胡文美教授主讲

  9. C#生成日期流水账号

    生成类似 LS14120002 private String GenNewOrder() { String newOrder; var orders = LYOrder.Items; String l ...

  10. Geronimo应用服务器和MySQL数据库服务器

    就是Web 2.0的全部,尽管该术语出现才几乎一年的时间,但现在好像只有烹饪杂志还没有加入到讨论Web 2.0未来出路的行列中.自从出现了里程碑式的文章"What Is Web 2.0:De ...