为了账号安全,请及时绑定邮箱和手机立即绑定
不用原生的childnodes是为了过滤掉#text元素

已采纳回答 / lingshimizi
防止parent是null或者未定义
//创一个元素div做为容器
tmp = tmp || fragment.appendChild(context.createElement("div"));
...
jQuery.merge(nodes, tmp.childNodes);
大神这里还遗漏的有代码。
通过jQuery.merge(nodes, tmp.childNodes)把碎片中的子节点添加到nodes中,但fragment没有清除子节点。如果把fragment附加到dom节点,会保留这些未清楚的子节点。
应该在后面加上:
tmp = fragment.firstChild;
tmp.textContent = "";
没有写元素不隐藏的时候的处理
睡觉了 ,除了 学习还有理想,给别人打工不长久 加油!
一脸蒙B的路过

最新回答 / Aero_Jin
只要不是单闭合标签, 都会增加结束标签, 例如:elem = "<div>123";用这段正则替换后, 就变成"<div>123</div>", 这是一种容错机制.

最新回答 / Aero_Jin
正常应该是会去掉的, 这里应该是个不完整的例子, 例子的作用主要还是让你理解思路, 你可以看下下一节domManip(下), 这一节中是这么处理的: <...code...>
配上视频更好哟~
是我理解错了吗? 有些地方 多余啊!

提示一下:对象的第一个数字代表权值
请大家学习的注意这两个地方、很容易忽略:

1.上面的方法改掉了TYPE其实就是让脚本无法解析(不是报错)、js会忽略
2.上面关注的正则,是为了兼容XML进行的处理、而上文是在javascript中运行所以替换掉了

OK!
为大家解释几点:
parentEles[0].ownerDocument //就是Document文档对象
fragment.firstChild //获取创建成功的DOM、也就是我们需要添加的对象
context.createElement(&quot;div&quot;) //不要误解,就是普通的创建一个元素 一般:document.xxx 或者 $(...)
fragment.appendChild() //返回创建的元素,也就是DIV
if (first){callback.call(parentEles, first);} //如果创建成功,写入文档

自此:本页内容就是这些!
只需记住:
在WebKit中,不能克隆包含了已选中多选按钮的文档碎片
规避WebKit checked属性
// We can&#039;t cloneNode fragments that contain checked, in WebKit
if ( !jQuery.support.checkClone &amp;&amp; arguments.length === 3 &amp;&amp; typeof value === &quot;string&quot; &amp;&amp; rchecked.test( value ) {return this.each(function() {jQuery(this).domManip( args, table, callback, true );});}
局部变量初始化


2: var results, first, fragment, parent,
3: value = args[0],
4: scripts = [];
5:
domManip: function( args, table, callback ) //最原始的定义
课程须知
源码的阅读不是一蹴而就的,需要大家有一定的功底,比如jQuery的基础运用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基础功底,甚至还需要理解常见的设计模式、数据结构等等。当然大家也不要被这些给吓住了,理解,总是需要一种慢慢的学习过程。
老师告诉你能学到什么?
通过本课程的学习,您可以由浅入深地剖析jQuery库的设计与实现。 其中我们围绕的重心: 1、设计理念 2、结构组织 3、接口设计 4、模式运用 5、场景套用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消