function parents(elem) {//elem 当前元素
var matched = [];// 翻译=>匹配
while ((elem = elem['parentNode']) && elem.nodeType !== 9) {/*循环 1,给elem 赋值为其父节点2,判断 如果 elem不等于根节点Document继续循环 */if (elem.nodeType === 1) { matched.push(elem);} /* 3,如果elem nodeType 全等于 Element 将elem push 进匹配数组*/} return matched;
}
var matched = [];// 翻译=>匹配
while ((elem = elem['parentNode']) && elem.nodeType !== 9) {/*循环 1,给elem 赋值为其父节点2,判断 如果 elem不等于根节点Document继续循环 */if (elem.nodeType === 1) { matched.push(elem);} /* 3,如果elem nodeType 全等于 Element 将elem push 进匹配数组*/} return matched;
}
// Descend through wrappers to the right content
// 因为warp被包装过
// 需要找到正确的元素父级
j = wrap[0];
while (j--) {
tmp = tmp.lastChild;
}
这段代码什么意思 为什么感觉看不懂
// 因为warp被包装过
// 需要找到正确的元素父级
j = wrap[0];
while (j--) {
tmp = tmp.lastChild;
}
这段代码什么意思 为什么感觉看不懂
2016-11-01
while循环有什么作用吗?不理解啊
为什么要用jQuery.merge(nodes,tmp,childNodes);
nodes变量什么地方使用了?
为什么要用jQuery.merge(nodes,tmp,childNodes);
nodes变量什么地方使用了?
2016-10-26
这也太不严谨了,这一章突然加入classname让人感到很迷,既然要filter掉className 那为什么不filter掉id呢?
2016-10-23
//创一个元素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 = "";
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 = "";
2016-10-08