2012-03-19 83 views
0

我真的不熟悉JavaScript和jQuery。我的问题是这个。不同的选择器返回不同的原型相同的对象?

我有两种形式,编号为id1id2在我的文档中。这些表单有一个validate方法(来自jQuery验证模块)。

当我这样做:

$(#id1).validate() 

...它的工作原理。但当我这样做:

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

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

回答

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() 
+0

非常感谢!快速跟进问题。有没有简单的方法来迭代(如地图)的Jquery对象的集合? 'map'和'each'都在DOM元素上工作。 – Yey 2012-03-19 19:10:27

+0

@ user1279217:取决于你想要做什么。大多数jQuery方法都是隐式迭代的。例如,'$('。myClass').addClass('anotherClass')'会将“anotherClass''添加到所有匹配的元素。如果你使用'.each()'或'.map()',你可以选择将当前DOM元素传递给jQuery函数......'$('。myClass')。each(function (i,el){$(el).addClass('anotherClass');});' – 2012-03-19 19:16:59

+1

感谢您的帮助! – Yey 2012-03-19 19:31:13

相关问题