jquery函数parseHTML中的parsed分析

2026-02-18 09:16:14

1、从jquery第500行找到

parsed = jQuery.buildFragment();

这里让人不理解buildGragment()到底是什么

还有buildGragment里面三个参数

fragment英文的意思是碎片,也就是不完整的一个片段

jquery函数parseHTML中的parsed分析

2、在jquery代码中找到关于buildGragment()函数的具体代码

有40行,里面的参数是args context scripts

args 从英文意思是参数context的意思是上下文环境scripts的意思是脚本

jquery函数parseHTML中的parsed分析

3、buildGragment()函数

首先定义了三个变量fragment,cacheable,cachehit

片段 可能缓存 缓存标记

然后定义first = args[0]

第一个 是 第一个参数arg[0]

通常是html标签内容

jquery函数parseHTML中的parsed分析

4、下面举一个例子容易理解下面一段代码

 //context = !context.nodeType && context[0] || context;

          bb = false;

          cc = "22";

          dd = "33";

          var aa = !bb && cc || dd;

          console.log(aa)

jquery函数parseHTML中的parsed分析

5、意思就是相当于代码:

var bb = false;

var cc = 11;

var dd = 22;

if(!bb && cc){

    var aa = cc;   

}else{

    var aa =dd;

}

浏览器测试代码

jquery函数parseHTML中的parsed分析

6、这里first.length查阅文档知道是html里面的代码小于512字节的话才能缓存

并且jQuery.support.checkClone的意思是

浏览器要能够支持check属性

jQuery.support.html5Clone的意思是

如果浏览器 支持html5

如果以上都支持,就cacheable = true;

可以缓存了

jquery函数parseHTML中的parsed分析

7、看看最后返回什么

返回一个对象有两个变量

o.fragment 和o.cacheable

缓存对象和是否缓存

jquery函数parseHTML中的parsed分析

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.frag

ment

代码片段副本返回

jquery函数parseHTML中的parsed分析

猜你喜欢