文档片段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. Properties类的用法

    在java.util包下面有一个类Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). 一. Properties结构 类继承结构如下: clas ...

  2. 排序+逆向思维 ACdream 1205 Disappeared Block

    题目传送门 /* 从大到小排序,逆向思维,从最后开始考虑,无后向性 每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是-- 复杂度 O(n + m),还以为 O(n^2)吓得写了 ...

  3. BZOJ2310 : ParkII

    单路径最大和问题,设f[i][j][S]表示到达(i,j),轮廓线状态为S的最优解. S用4进制m+1位数表示,0表示无插头,1表示左括号,2表示右括号,3表示独立插头. 在DP之前先进行一次预处理, ...

  4. 12个实用的 Javascript 奇淫技巧

    这里分享12个实用的 Javascript 奇淫技巧.JavaScript自1995年诞生以来已过去了16个年头,如今全世界无数的网页在依靠她完成各种关键任务,JavaScript曾在Tiobe发布的 ...

  5. object-c cocos2d-x 写程序时注意调试的技巧

    (1)写程序时最好在类的init函数中显示类名,表明现在在执行哪个类,样例代码 CCLOG(@"cocos2d: Using Director Type:%@", [self cl ...

  6. CC150 - 11.3

    Question: Given a sorted array of n integers that has been rotated an unknown number of times, write ...

  7. 运用正则表达式在Asp中过滤Html标签代码的四种不同方法

    Function RemoveHTML(strHTML)Dim objregExp, Match, MatchesSet objRegExp = New RegexpobjRegExp.IgnoreC ...

  8. iOS开发项目之三 [ 自定义tabBarCtrl]

    01 让tabBar的图片保持原样.图片渲染的处理 ctrl.tabBarItem.selectedImage = [[UIImage imageNamed:[NSString stringWithF ...

  9. kail-linux 安全之旅

    一些学习网站 http://xiao106347.blog.163.com/blog/static/2159920782013111995945233/ http://xiao106347.blog. ...

  10. 【新产品发布】iM_VGA 真彩显示VGA模块!(含视频教程)

    ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...