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);
}
分析待写!
分享到:
相关推荐
2. **事件绑定**:jQuery的`on()`方法可以绑定各种事件,如`click()`, `change()`, 或者在本例中可能用到的`load()`或`DOMContentLoaded`,用于在页面加载完成后执行某些函数,如初始化股票数据。 3. **Ajax请求**...
通过分析`datagrid`函数,我们可以看到它如何初始化表格,如何处理数据源,以及如何响应用户交互,例如点击列头进行排序。同时,源码中还包含了各种插件,如行选择、编辑功能等,这些都是通过扩展jQuery对象实现的。...
在jQuery的实现中,`jQuery()`实际上是一个工厂方法,它返回的是一个经过初始化的对象,而不是直接返回`this`引用。在JavaScript中,`this`的值取决于函数调用的方式。在`jQuery`函数内部,`this`并不总是指向我们...
2. **初始化元素**:使用jQuery选择器选择需要变为可编辑的元素,并调用`.editable()`方法进行初始化,可以设置各种参数以定制行为。 3. **处理回调函数**:根据需要为插件提供的事件绑定相应的回调函数,例如`...
8. **插件的初始化和调用**:了解如何在网页中引入jQuery和fDialog,并调用相应的API来创建和控制对话框。 9. **封装与模块化**:良好的代码组织对于维护和扩展插件至关重要。fDialog的源码将展示如何封装功能以...
`starterkit`可能是某个jQuery项目的基础工具包,包含了初始化文件、样式表和可能的插件。 学习jQuery不仅能够提高开发效率,还能使代码更简洁易读。通过这个入门教程,你可以掌握jQuery的基本用法,并进一步探索其...
以上只是jQuery源码中部分“魔术方法”的介绍,实际上,jQuery的源码充满了巧妙的设计和优化,深入学习和理解这些方法,对于提升JavaScript和前端开发的技能大有裨益。在实际开发中,熟练运用这些方法,可以让你的...
### jQuery源码详解 #### 一、概述与设计理念 **jQuery** 作为一款优秀的 JavaScript 库,相较于其他同类库如 **Prototype**, **YUI**, **Mootools** 等,以其独特的设计理念脱颖而出。它专注于实用性和高效性,...
执行过程中,jQuery 首先进行初始化检查,防止重复加载。然后定义构造函数,接着设置 `jQuery.fn` 和 `jQuery.prototype` 上的基础方法。`jQuery.extend` 方法用于动态添加或修改 jQuery 对象的方法和属性。之后,...
### jQuery未压缩版本源码学习:深入理解jQuery的初始化与选择器处理机制 #### 初始化方法:`jQuery.fn.init` 在jQuery未压缩版本源码中,`jQuery.fn.init`是核心构造函数,负责处理各种类型的输入参数,将其转换...
### JQuery源码的奥秘逐行分析视频教程 #### JQuery简介 JQuery 是一款轻量级的 JavaScript 库,它极大地简化了 HTML 文档遍历、事件处理、动画以及 Ajax 交互等操作。JQuery 提供了一个简洁且强大的 API 接口,...
2. **函数封装**:jQuery将所有功能封装在`jQuery.fn`(即`jQuery.prototype`)对象中,通过`init`构造函数初始化实例,实现了面向对象的特性。 3. **$.extend()与$.fn.extend()**:这两个函数用于扩展jQuery对象和...
3. 使用JavaScript代码或HTML数据属性来初始化和操作jQuery UI组件。 4. 如果需要自定义组件的行为,可以通过事件监听和回调函数实现。 **最佳实践** 1. 仅加载需要的组件,减少页面加载时间。 2. 使用CDN(内容...
在JavaScript部分,我们需要初始化`jQuery Grid`,定义表格的列、数据源以及其他配置: ```javascript $("#grid").jqGrid({ url: 'server.php', // 数据来源,可以是服务器端接口 datatype: 'json', colModel: ...
这一点在某些场景下非常有用,比如只需要初始化一次的事件处理。 auto模型是一种能够自动触发加入Callbacks中函数的特性。当一个新的函数添加到Callbacks之后,它会自动执行之前已经添加的函数,并将最新的参数传递...
- 了解核心方法如`$(selector)`的初始化过程,以及如何通过`fn.extend()`扩展jQuery功能。 7. **性能优化** - 使用Sizzle选择器引擎提高选择元素的速度。 - 避免不必要的DOM操作,如多次选择同一个元素。 - ...
4. **初始化滑动条**:在页面加载完成后,使用jQuery的`$(document).ready()`函数初始化滑动条插件。设置滑动条的配置选项,如最小值、最大值、初始值等。 ```javascript $(document).ready(function() { $("#...
1. **初始化**:当调用`$()`函数时,会创建一个jQuery对象实例。 2. **构造函数**:调用jQuery的构造函数,传递选择器字符串给构造函数。 3. **元素查找**:在构造函数内部调用`jQuery.find`方法来查找匹配的选择器...
源码中,`init`函数负责初始化,它首先解析参数,然后对选择到的元素进行操作。例如,`$(document).ready()`用于在文档加载完成后执行函数,这是通过观察DOMContentLoaded事件实现的。 三、jQuery UI简介 jQuery ...
为了学习和使用此插件,你需要解压缩下载的`jQuery淡化轮播 v1.1-源码.zip`文件,解压密码为`www.cqlsoft.com`。解压后,你将获得源代码,包括HTML、CSS和JavaScript文件,这些文件展示了轮播图的完整实现。 通过...