2009-08-23 49 views
5

私はJQueryを使用していますが、私はこの奇妙な(または愚かな)エラーに遭遇しています。私のHTMLでJQuery - object.idは、定義されていないときは定義されていません。

私が持っている:

<input type="password" name="repeatPassword" id="id_repeatPassword" /> 

そして私のjavascriptのコードでは、私が持っている:

残念ながら機能 "validateRepeatPassword" で
validateRepeatPassword($('#id_repeatPassword')); 

function validateRepeatPassword(o) { 
     // this works 
     if (o.value == $("#id_password").val()) { 
     // this returns "undefined" 
     alert(o.id) 
... 
} 

なぜですか?

答えて

13

は、jQueryオブジェクトへの参照であり、DOM要素の参照ではありません。やるあなたvalidateRepeatPassword関数内:oはjQueryオブジェクトである

alert($(o).attr('id')); 

をあなたはjQueryオブジェクトから直接DOM要素のプロパティにアクセスする場合は、

alert(o[0].id) 

alert(o.get(0).id); 
+1

oは私がいることを知って、すでにjQueryオブジェクト – cletus

+0

ですが、それを関数の中にラップすると、引数にDOM要素を受け入れるという点で、より寛大になります。それは大きな問題ではありません。 –

+0

クールですが、jQueryを使用してobejectをDOM要素参照として取得する方法がありますか? –

2

あなたの関数の内部では、あなたがIDをつかむ必要がありますattrの機能はoです。

alert(o.attr('id')); 

しかし、あなたはあなたのvalidateRepeatPassword機能上のDOM要素を直接操作したい場合、あなたは要素への参照を渡すことができます

validateRepeatPassword($('#id_repeatPassword').get(0)); 
関連する問題