2012-03-19 49 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