jquery_clean源码分析

jquery1.0源码解读

jQuery函数

1
2
3
4
5
6
7
8
// Handle HTML strings
//处理html字符串
//以非<开头 当中<> 非>结束
//如果a是html代码,$("<div/>"),把html代码转成Dom元素
//jQuery.clean 就是把html代码 转换成Dom元素数组
var m = /^[^<]*(<.+>)[^>]*$/.exec(a);
if ( m ) a = jQuery.clean( [ m[1] ] );
...省略
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
   //比如$('<div>123</div>,<a><223/a>')
//用调用jQuery.clean方法返回
//a 需是一个数组
clean: function(a) {
var r = [];
for ( var i = 0; i < a.length; i++ ) {
if ( a[i].constructor == String ) {

var table = "";
//indexOf 返回0 !0才是正确的
if ( !a[i].indexOf("<thead") || !a[i].indexOf("<tbody") ) {
table = "thead";
a[i] = "<table>" + a[i] + "</table>";
} else if ( !a[i].indexOf("<tr") ) {
table = "tr";
a[i] = "<table>" + a[i] + "</table>";
} else if ( !a[i].indexOf("<td") || !a[i].indexOf("<th") ) {
table = "td";
a[i] = "<table><tbody><tr>" + a[i] + "</tr></tbody></table>";
}

var div = document.createElement("div");
div.innerHTML = a[i];//构造div 把table放在div中。

if ( table ) {
div = div.firstChild;// table元素

//如果table是 tr 那么 div就变成tr元素
//如果table是 td 那么 div也变成tr元素 ,但是下面的div就变成tr了。
if ( table != "thead" ) div = div.firstChild;//t的时候
if ( table == "td" ) div = div.firstChild;
}

for ( var j = 0; j < div.childNodes.length; j++ )
r.push( div.childNodes[j] );
} else if ( a[i].jquery || a[i].length && !a[i].nodeType )
for ( var k = 0; k < a[i].length; k++ )
r.push( a[i][k] );
else if ( a[i] !== null )
r.push( a[i].nodeType ? a[i] : document.createTextNode(a[i].toString()) );
}
return r;
}

jQuery.clean()方法源码分析(一)
[原创] jQuery源码分析-13 CSS操作-CSS-样式表-jQuery.fn.css()

欢迎关注我的公众号:沉迷Spring
显示 Gitment 评论
0%