首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

jQuery源码学习(4)- 初始化函数

2012-11-22 
jQuery源码学习(四)-- 初始化函数?function init (selector,context,rootjQuery){var match,elem,ret,doc

jQuery源码学习(四)-- 初始化函数

?

function init (selector,context,rootjQuery){                          var match,elem,ret,doc;// Handle $(""), $(null), $(undefined), $(false)if (!selector) {return this;//this = jQuery}// Handle $(DOMElement)if (selector.nodeType) {//alert(1);this.context = this[0] = selector;this.length = 1;return this;}// Handle HTML stringsif ( typeof selector === "string") {if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) {// Assume that strings that start and end with <> are HTML and skip the regex checkmatch = [null, selector, null];} else {match = rquickExpr.exec(selector);}// Match html or make sure no context is specified for #idif (match && (match[1] || !context)) {// HANDLE: $(html) -> $(array)if (match[1]) {context = context instanceof jQuery ? context[0] : context;doc = (context && context.nodeType ? context.ownerDocument || context : document );// scripts is true for back-compatselector = jQuery.parseHTML(match[1], doc, true);if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {this.attr.call(selector, context, true);}return jQuery.merge(this, selector);// HANDLE: $(#id)} else {elem = document.getElementById(match[2]);// Check parentNode to catch when Blackberry 4.6 returns// nodes that are no longer in the document #6963if (elem && elem.parentNode) {// Handle the case where IE and Opera return items// by name instead of IDif (elem.id !== match[2]) {return rootjQuery.find(selector);}// Otherwise, we inject the element directly into the jQuery objectthis.length = 1;this[0] = elem;}this.context = document;this.selector = selector;return this;}// HANDLE: $(expr, $(...))} else if (!context || context.jquery) {return (context || rootjQuery ).find(selector);// HANDLE: $(expr, context)// (which is just equivalent to: $(context).find(expr)} else {return this.constructor(context).find(selector);}// HANDLE: $(function)// Shortcut for document ready} else if (jQuery.isFunction(selector)) {return rootjQuery.ready(selector);}if (selector.selector !== undefined) {this.selector = selector.selector;this.context = selector.context;}return jQuery.makeArray(selector, this);}
分析待写!

热点排行