所有 jQuery选择器和遍历函数都返回一个 jQuery 对象。jQuery 对象是一个类数组对象,具有属性和对核心函数的引用。
显示 jQuery 对象http://jsfiddle.net/Tj9e8/1/中随时可用的属性和函数列表的小示例
当您将 jQuery 函数调用为$(selector)
时,它会创建一个 jQuery 对象,其中包含基于选择器的匹配元素的包装列表。
例如:当你这样做时$('#test')
,它会创建一个 jQuery 对象并用 ID 包装 DOM 元素test
。
检查 jQuery 函数中的以下代码片段.init
以处理 ID 选择器
elem = document.getElementById(match[2]);
//match[2] is string 'test' in '#test' that was passed to $('#test')
if (elem && elem.parentNode) {
if (elem.id !== match[2]) {
return rootjQuery.find(selector);
}
//below 2 lines allows the jQuery object to behave like array like objects
this.length = 1;
this[0] = elem; //elem is nothing but the dom node.
}
this.context = document;
this.selector = selector;
return this; //Returns jQuery object
有关更多信息,请查看.init
功能代码
下面是截图$('#test')
。
如您所见,长度为 0,但 $ 函数仍返回长度为 0 的 jQuery 对象。这是为了保护下一个链式调用而不是引发错误。
在大多数情况下,我们选择一个元素在其上运行某些功能。
例如: $('#test').addClass('example')
。
$('#test')
使用字符串参数调用的 jQuery 函数'#test'
- 上面的 jQuery 调用
.init
来确定参数的类型并返回一个包含匹配元素的 jQuery 对象(如果有,否则只是 jQuery 对象)。
调用.addClass
jQuery 对象,该对象在内部迭代匹配元素的列表并将类添加到元素中。以下是.addClass
功能代码的片段
if (value && typeof value === "string") {
classNames = value.split(core_rspace);
for (i = 0, l = this.length; i < l; i++) {
//^-- This is where it iterate over matched elements
elem = this[i];
if (elem.nodeType === 1) {
现在要注意的是,
- $ 函数总是返回一个 jQuery 对象
jQuery 对象只不过是一个带有以下内容的 javascript 对象
一个。包装的匹配元素集使用 .find 的示例
湾。properties -列出属性的示例
C。函数 -列出函数的示例
HTML:
<ul>
<li>Test</li>
<li class="red">Test</li>
<li>Test</li>
<li class="red">Test</li>
</ul>
JS:
var $lisample = $('ul').find('.red');
由于.find
如下所示,不是包装的匹配元素集,
更多阅读
- jQuery 对象如何模仿数组?
- jQuery 对象和 DOM 元素
- http://blog.buymeasoda.com/does-calling-the-jquery-function-return-an-ob