不同的选择器返回具有不同原型的相同对象?

时间:2012-03-19 18:00:25

标签: jquery jquery-selectors

我是JavaScript和jQuery的新手。我的问题是这个。

我的文档中有两个标识为id1id2的表单。表单有一个validate方法(来自jQuery validate模块)。

当我这样做时:

$(#id1).validate()

......它有效。但是当我这样做时:

$('form[id^="id"]')[0].validate()

......它说TypeError: Object #<HTMLFormElement> has no method 'validate'。这对我来说很奇怪,因为我在同一个对象上调用validate

1 个答案:

答案 0 :(得分:1)

它们是不同的对象,因为在第二个示例中,您在索引0处提取DOM元素...

 //  v------returns jQuery object
$('#id1').validate()

 //     v------returns jQuery object
$('form[id^="id"]')[0].validate()
 //                 ^----------extracts the DOM element

正确的等价物是......

$('form[id^="id"]').validate()

......或者如果你只想要第一个元素......

$('form[id^="id"]').eq(0).validate()