1、从jquery第500行找到parsed = jQuery.buildFragment();这里让人不理解buildGragment()到底是什么还有buildGragment里面三个参数fragment英文的意思是碎片,也就是不完整的一个片段

2、在jquery代码中找到关于buildGragment()函数的具体代码有40行,里面的参数是args context scriptsargs 从英文意思是参数context的意思是上下文环境scripts的意思是脚本

3、buildGragment()函数首先定义了三个变量fragment,cacheable,cachehit片段 可能缓存 缓存标记然后定义first = args[0]第一个 是 第一个参数arg[0]通常是html标签内容

4、下面举一个例子容易理解下面一段代码//context = !context.nodeType && context[0柯计瓤绘] || context; bb = false; cc = "22"; dd = "33"; var aa = !bb && cc || dd; console.log(aa)

5、意思就是相当于代码:var bb = false;var cc = 11;var dd = 22;if(!bb && cc){ var aa = cc; }else{ var aa =dd;}浏览器测试代码

6、这里first.length查阅文档知道是html里面的代码小于512字节的话才能缓存 并且jQuery.support.checkClone的意思是浏览器要能够支持check属性jQuery.support.html5Clone的意思是如果浏览器 支持html5如果以上都支持,就cacheable = true;可以缓存了

7、看看最后返回什么返回一个对象有两个变量o.fragment 和o.cacheable缓存对象和是否缓存

8、现在回到parseHTML函数中的代码:parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );这时候parsed就有parsed.fragment 和parsed.cacheable return jQuery.merge( )parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment这时候返回 如果 parsed.cacheable可以缓存的画,就会克隆一个parsed.fragment代码片段副本返回
