于jQuery
1.7.1惨遭调用jQuery.clean()方法的地方出三远在,首次就是是以我前边的小说分析jQuery.buildFramgment()方法中的,其实要构造函数的等同片,在处理诸如$(‘<div>123</div>’)格局之参数时会见首选调用jQuery.buildFramgment()创设文档片段,而者主意来依赖jQuery.clean()方法来实现dom转换,所以那一个措施的首先独用处就是以布局jQuery对象方面。其它两处于虽然是在少只dom操作方法before和after方法中,重假设拍卖dom相关操作的,相关源码代码如下:

//创建文档碎片后调用转换为dom
if ( !fragment ) {
        fragment = doc.createDocumentFragment();
        jQuery.clean( args, doc, fragment, scripts );
}

//before方法中调用
before: function() {
        if ( this[0] && this[0].parentNode ) {
            return this.domManip(arguments, false, function( elem ) {
                this.parentNode.insertBefore( elem, this );
            });
        } else if ( arguments.length ) {
            var set = jQuery.clean( arguments );
            set.push.apply( set, this.toArray() );
            return this.pushStack( set, "before", arguments );
        }
    },
//after方法中调用

after: function() {
        if ( this[0] && this[0].parentNode ) {
            return this.domManip(arguments, false, function( elem ) {
                this.parentNode.insertBefore( elem, this.nextSibling );
            });
        } else if ( arguments.length ) {
            var set = this.pushStack( this, "after", arguments );
            set.push.apply( set, jQuery.clean(arguments) );
            return set;
        }
},

术 jQuery.clean( elems, context,
fragment, scripts ) 执行的 8 个关键步骤如下:
1)创设一个即 div
元素,并插入一个安文档片段被。
2)为 HTML
代码包裹必要的父标签,然后赋值给临时 div 元素的 innerHTML
属性,从而
将 HTML 代码转换为 DOM
元素,之后重新层层剥去包的父元素,得到更换后底 DOM 元素。
3)移除 IE 6/7 自动插入的空 tbody
元素,插入 IE 6/7/8 自动删除的导空白符。
4)取到转换后的 DOM 元素集合。
5)在 IE 6/7
中更正复选框和单选按钮的当选状态。
6)合并转换后的 DOM 元素。
7)即便传入了文档片段
fragment,则取所有法定的 script 元素存入数组 scripts,并将
另因素插入文档片段 fragment。
8)最后回来转换后的 DOM 元素数组。

下开端源码分析:

clean: function( elems, context, fragment, scripts ) {
  ...
}

要事先分析一下参数:

elems:保存待转换html字符串的数组

为了更好地亮不如如故在前台调用一下然后重新省源码中尽之结果;现在当html页面执行同样段落js代码(默认在dom加载后执行)

$('<div>123</div>,<a><223/a>');

接下来再度省源码执行之动静,相信通晓jQuery源码或者拘留了自己事先小说的读者都会师领会这段这段代码是怎一步一步走及clean方法中的,下边直接扣执行的结果看第一只参数的值是呀?

["<div>123</div>,<a><223/a>"]

经日记方法来看得到的便是一个数组里面含着传递进入的字符串标签

context:文档对象,该参数在点子 jQuery.buildFragment()中于修正为科学的缓
档案对象(变量 doc) ,稍后会调用它的办法 createTextNode()创立文本节点、调用方法
createElement() 创制临时 div 元素。

由是经buildFragment方法传递进入,以前以的例证会受修改为文档对象document,尽管不是后边也会于召开越来越处理

‰ fragment:文档片段,作为存放易后底 DOM 元素的占用位符,该参数在
jQuery.

buildFragment() 中受创立。

下是于源码中输出此参数的结果

图片 1

参数 scripts:数组,用于存放易后底 DOM 元素中之 script 元素

相关文章

网站地图xml地图