jQuery的运行机制和设计理念分析(2)


init : function(selector, context) {
selectorselector = selector || document;// 确定selector存在

// 第一种情况 Handle $(DOMElement)单个Dom 元素,忽略上下文

if (selector.nodeType) {
this[0] = selector;
this.length = 1;
return this;
}

if (typeof selector == "string") {//selector为string
var match = quickExpr.exec(selector);
if (match && (match[1] || !context)) {
if (match[1])// 第二种情况处理$(html) -> $(array)
selector = jQuery.clean([match[1]], context);
else {// 第三种情况:HANDLE: $("#id")//处理$("#id")
var elem = document.getElementById(match[3]);
if (elem) {
// IE会返回name=id的元素 ,如果是这样,就document.find(s)
if (elem.id != match[3])
return jQuery().find(selector);
// 构建一个新的jQuery(elem)
return jQuery(elem);
}
selector = [];
}
} else

// 第四种情况:处理$(expr, [context])==$(content).find(expr)
return jQuery(context).find(selector);
} else if (jQuery.isFunction(selector)) // 第五种情况:处理$(function)七Shortcut for document ready
return jQuery(document)[jQuery.fn.ready ? "ready" : "load"](selector);

// 第六种情况:处理$(elements)
return this.setArray(jQuery.makeArray(selector));
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdfgps.html