jQuery ID Selector(“#id”)返回Array

时间:2011-08-24 23:58:38

标签: javascript jquery

我在noConflict模式下使用jQuery v1.6.1。

我正在使用$j("#divID").value之类的id选择器来获取存储项的值。

不幸的是,$j("#inputID")正在返回一个项目列表,所以我必须使用$j("divID")[0].value来获取对象的值。 [0]似乎没必要,因为根据定义,只有一个html元素具有任何给定的id。

这是从IDed对象获取值的适当方法吗?或者有更好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:104)

$j("#divID").val()可以正常使用。

根据jQuery documentation.val()将返回匹配元素集中第一个元素的值。

从概念上理解jQuery是如何工作的,以便了解它为什么以这种方式工作是值得的。任何选择器查询的结果都是jQuery对象。这是jQuery对象,它包含jQuery提供的无数方法。 .val().fadeIn().hide()之类的方法之一......这些方法不是DOM对象上的方法,而是jQuery对象的方法。因为jQuery对象是通用的,并且可以在其内部数组中保存0个,1个或多个DOM对象,所以从jQuery选择器调用返回相同的jQuery对象,无论结果中是否包含0个,1个或更多DOM对象。

因此,只包含一个对象的$j("#divID")返回与$j(".rows")相同类型的对象,该对象可能包含数百个DOM对象。这极大地简化了jQuery编程,因为您不必根据从选择器查询返回的对象数量来做不同的事情。

当您引用$j("divID")[0]时,您将进入jQuery对象的DOM对象的内部数组(在选择器查询中填充)并获取该数组中的第一个DOM对象。此时,您有一个普通的DOM对象,而不是一个jQuery对象,您可以使用普通的DOM方法或属性。有时这是必需的(获取实际的DOM对象),但通常,只使用jQuery在jQuery对象上提供的方法更容易。使用它们有很多好处,例如你可以将多个请求链接到大多数方法,它会自动迭代它的内部数组中的所有DOM对象。

例如,您调用了这个:$j("rows-even").hide()并且该类有20行,然后所有这些行都由hide()方法操作,没有更多的代码。您可以将多个方法链接在一起,如下所示:$j("rows-even").slideUp().slideDown()。在这种情况下,您正在运行动画,jQuery将这两个动画链接在一起,当第一个完成时自动启动第二个动画。它在许多情况下都非常有用,并且可以节省大量代码,而不是通常使用普通JS编写的代码。

答案 1 :(得分:3)

$j("#divID")会返回jQuery个对象。为了获得所选元素的值,您必须调用其val方法来获取值。

使用$j("#divID").val();