jQuery $实际返回什么?


113

我已经阅读了JQuery文档,并且在将什么传递给该函数上有很多关注,但是我没有看到有关它实际返回什么的任何信息。

特别是,即使只找到一个元素,它也总是返回一个数组吗?当什么都没找到时,它返回null吗?这在哪里记录?

我知道可以将jquery方法应用于返回值,但是如果我想直接使用返回值怎么办?

Answers:


76

根据里克·斯特拉尔(Rick Strahl)的描述

jQuery对象:包装的集合:选择器返回一个称为“包装的集合”的jQuery对象,这是一个包含所有选定DOM元素的类似于数组的结构。您可以像数组一样遍历包装的集合,也可以通过索引器访问单个元素(例如$(sel)[0])。更重要的是,您还可以对所有选定元素应用jQuery函数。

关于什么都不返回:

它总是返回一个数组吗?它返回null吗?

您总是会找回同一件事,无论它是否有任何内容都是问题。通常,您可以使用.val()进行检查(例如$('。myElem')。val())


1
太好了,谢谢...这非常有帮助。我不知道用户定义的对象可以同时像“数组一样”-我想那是jquery的天才。
哈波

不用客气-我也刚刚编辑并在Rick Strahl的文章中添加了完整链接-这是一本好书。
伊恩·罗宾逊

14
对于导致我出现此问题的问题,即如何检查是否找到了任何内容,我选择了$(query).length,这似乎可以解决问题。
哈波

3
像set这样的数组是什么...。它是数组还是对象还是?...我们可以精确吗?

26

它不返回数组,而是返回一个jQuery对象。jQuery对象是包含所有特殊jQuery方法的对象。

它从不返回null或其他类型。如果找到一个元素,则jQuery对象将只有一个孩子。如果未找到任何元素,则jQuery对象将为空。


6

jQuery函数(即“ $”)始终在每个实例中返回一个jQuery对象。


4
@harpo:一点也不;只是有关对象的命名不正确。“ jQuery对象”,又称$“ jQuery对象”,又称“包装集”。
肖恩·麦克米伦

5

作为另一个回答者,它总是返回jQuery对象。

该对象始终包含一个元素数组(即使它是一个空数组或只有一个对象的数组)。

如果您想直接使用返回的对象(例如)作为普通元素,则可以执行以下操作之一:

$('selector')[0] // element
$('selector').get(0) // element
$('selector').length // number of elements in the array

3

jQuery文档中

jQuery对象本身的行为很像数组。它具有length属性,并且对象中的元素可以通过其数字索引[0]至[length-1]进行访问。请注意,jQuery对象实际上不是Javascript Array对象,因此它没有真正的Array对象的所有方法,例如join()。


2

$()始终返回jQuery函数的事实使您可以明智地链接jQuery函数调用。


1
问!$()不返回jQuery函数($本身),而是返回一个包装好的集合,上面包含所有有用的方法。
肖恩·麦克米兰

1

jQuery选择器机制

$("..") ,jquery选择器,用于选择匹配的元素。

返回值

它总是返回类似数组的jquery对象,该对象具有一个length属性,

返回的jquery对象的调用方法

可以在对象上调用jquery的方法,并将其应用于那些选定的元素,

通过索引访问原始元素

所选元素存储为对象的属性,其属性名称是从0开始的索引号,
因此可以从0开始从索引访问,
在获取原始元素之后,您可以将其视为get by document.getElementXxx()

将原始元素包装到jquery对象

获取原始元素后,可以通过调用将其包装为jquery对象$(originalEle)
然后可以在包装的对象上调用jquery方法。


0

根据firebug,它返回与选择器匹配的对象数组。但是这个数组是一个jQuery对象,它比简单的Array有更多的方法。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.