2012-03-19 26 views
0

JavaScriptとjQueryの新機能です。私の質問はこれです。異なるセレクタは異なるプロトタイプで同じオブジェクトを返しますか?

は、私は私のドクのid id1id2との2つの形式があります。フォームには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

+0

@ user1279217:あなたがしたいことに依存します。ほとんどのjQueryメソッドは暗黙的に繰り返します。たとえば、 '$( '。myClass')。addClass( 'anotherClass')'は、一致したすべての要素に '' anotherClass ''を追加します。 '.each()'や '.map()'を使うと、現在のDOM要素を受け取り、それをjQuery関数に渡すオプションがあります... '$( '。myClass')。 (i、el){$(el).addClass( 'anotherClass');}); ' –

+1

あなたの助けてくれてありがとう! – Yey

関連する問題