`
JavaSam
  • 浏览: 954892 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 strings
			if ( 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 check
					match = [null, selector, null];

				} else {
					match = rquickExpr.exec(selector);
				}

				// Match html or make sure no context is specified for #id
				if (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-compat
						selector = 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 #6963
						if (elem && elem.parentNode) {
							// Handle the case where IE and Opera return items
							// by name instead of ID
							if (elem.id !== match[2]) {
								return rootjQuery.find(selector);
							}

							// Otherwise, we inject the element directly into the jQuery object
							this.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);
}
分析待写!
0
1
分享到:
评论

相关推荐

    jQuery学习记录----股票信息实时显示(七)

    2. **事件绑定**:jQuery的`on()`方法可以绑定各种事件,如`click()`, `change()`, 或者在本例中可能用到的`load()`或`DOMContentLoaded`,用于在页面加载完成后执行某些函数,如初始化股票数据。 3. **Ajax请求**...

    jquery-easyui-1.2.5源码

    通过分析`datagrid`函数,我们可以看到它如何初始化表格,如何处理数据源,以及如何响应用户交互,例如点击列头进行排序。同时,源码中还包含了各种插件,如行选择、编辑功能等,这些都是通过扩展jQuery对象实现的。...

    通过jQuery源码学习javascript(二)

    在jQuery的实现中,`jQuery()`实际上是一个工厂方法,它返回的是一个经过初始化的对象,而不是直接返回`this`引用。在JavaScript中,`this`的值取决于函数调用的方式。在`jQuery`函数内部,`this`并不总是指向我们...

    jquery editable plugin--点击编辑文字插件

    2. **初始化元素**:使用jQuery选择器选择需要变为可编辑的元素,并调用`.editable()`方法进行初始化,可以设置各种参数以定制行为。 3. **处理回调函数**:根据需要为插件提供的事件绑定相应的回调函数,例如`...

    jQuery fDialog v1.0.1-源码.zip

    8. **插件的初始化和调用**:了解如何在网页中引入jQuery和fDialog,并调用相应的API来创建和控制对话框。 9. **封装与模块化**:良好的代码组织对于维护和扩展插件至关重要。fDialog的源码将展示如何封装功能以...

    JQuery教程---入门

    `starterkit`可能是某个jQuery项目的基础工具包,包含了初始化文件、样式表和可能的插件。 学习jQuery不仅能够提高开发效率,还能使代码更简洁易读。通过这个入门教程,你可以掌握jQuery的基本用法,并进一步探索其...

    139.jQuery源码分析-魔术方法.rar

    以上只是jQuery源码中部分“魔术方法”的介绍,实际上,jQuery的源码充满了巧妙的设计和优化,深入学习和理解这些方法,对于提升JavaScript和前端开发的技能大有裨益。在实际开发中,熟练运用这些方法,可以让你的...

    jquery源码详解

    ### jQuery源码详解 #### 一、概述与设计理念 **jQuery** 作为一款优秀的 JavaScript 库,相较于其他同类库如 **Prototype**, **YUI**, **Mootools** 等,以其独特的设计理念脱颖而出。它专注于实用性和高效性,...

    jQuery源码解读

    执行过程中,jQuery 首先进行初始化检查,防止重复加载。然后定义构造函数,接着设置 `jQuery.fn` 和 `jQuery.prototype` 上的基础方法。`jQuery.extend` 方法用于动态添加或修改 jQuery 对象的方法和属性。之后,...

    jQuery 未压缩版本源码学习

    ### jQuery未压缩版本源码学习:深入理解jQuery的初始化与选择器处理机制 #### 初始化方法:`jQuery.fn.init` 在jQuery未压缩版本源码中,`jQuery.fn.init`是核心构造函数,负责处理各种类型的输入参数,将其转换...

    JQuery源码的奥秘逐行分析视频教程

    ### JQuery源码的奥秘逐行分析视频教程 #### JQuery简介 JQuery 是一款轻量级的 JavaScript 库,它极大地简化了 HTML 文档遍历、事件处理、动画以及 Ajax 交互等操作。JQuery 提供了一个简洁且强大的 API 接口,...

    jquery源码好不容易找到的与大家分享

    2. **函数封装**:jQuery将所有功能封装在`jQuery.fn`(即`jQuery.prototype`)对象中,通过`init`构造函数初始化实例,实现了面向对象的特性。 3. **$.extend()与$.fn.extend()**:这两个函数用于扩展jQuery对象和...

    jquery-ui-1.8.16.custom

    3. 使用JavaScript代码或HTML数据属性来初始化和操作jQuery UI组件。 4. 如果需要自定义组件的行为,可以通过事件监听和回调函数实现。 **最佳实践** 1. 仅加载需要的组件,减少页面加载时间。 2. 使用CDN(内容...

    jquery grid插件 -- 编辑表格

    在JavaScript部分,我们需要初始化`jQuery Grid`,定义表格的列、数据源以及其他配置: ```javascript $("#grid").jqGrid({ url: 'server.php', // 数据来源,可以是服务器端接口 datatype: 'json', colModel: ...

    jQuery源码分析之Callbacks详解

    这一点在某些场景下非常有用,比如只需要初始化一次的事件处理。 auto模型是一种能够自动触发加入Callbacks中函数的特性。当一个新的函数添加到Callbacks之后,它会自动执行之前已经添加的函数,并将最新的参数传递...

    锋利的Jquery 源码

    - 了解核心方法如`$(selector)`的初始化过程,以及如何通过`fn.extend()`扩展jQuery功能。 7. **性能优化** - 使用Sizzle选择器引擎提高选择元素的速度。 - 避免不必要的DOM操作,如多次选择同一个元素。 - ...

    jQuery插件--滑动条

    4. **初始化滑动条**:在页面加载完成后,使用jQuery的`$(document).ready()`函数初始化滑动条插件。设置滑动条的配置选项,如最小值、最大值、初始值等。 ```javascript $(document).ready(function() { $("#...

    jquery 源码分析

    1. **初始化**:当调用`$()`函数时,会创建一个jQuery对象实例。 2. **构造函数**:调用jQuery的构造函数,传递选择器字符串给构造函数。 3. **元素查找**:在构造函数内部调用`jQuery.find`方法来查找匹配的选择器...

    login_jquery和jq-UI源码_

    源码中,`init`函数负责初始化,它首先解析参数,然后对选择到的元素进行操作。例如,`$(document).ready()`用于在文档加载完成后执行函数,这是通过观察DOMContentLoaded事件实现的。 三、jQuery UI简介 jQuery ...

    jQuery淡化轮播 v1.1-源码.zip

    为了学习和使用此插件,你需要解压缩下载的`jQuery淡化轮播 v1.1-源码.zip`文件,解压密码为`www.cqlsoft.com`。解压后,你将获得源代码,包括HTML、CSS和JavaScript文件,这些文件展示了轮播图的完整实现。 通过...

Global site tag (gtag.js) - Google Analytics