JQuery – object.id在不应该的时候是未定义的

我正在使用JQuery,我遇到了这个奇怪的(或者可能是愚蠢的)错误。

在我的HTML中,我有:

 

然后在我的JavaScript代码中我有:

 validateRepeatPassword($('#id_repeatPassword')); 

不幸的是在函数“validateRepeatPassword”中:

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

为什么?

o是对jQuery对象的引用,而不是DOM元素引用。 在validateRepeatPassword函数内部执行:

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

如果要从jQuery对象访问直接DOM元素的属性,

 alert( o[0].id ) alert( o.get(0).id ); 

在函数内部o是一个jQuery对象,你应该使用o的attr函数来获取id。

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

但是,如果您想直接使用validateRepeatPassword函数上的DOM元素,则可以传递对该元素的引用:

 validateRepeatPassword($('#id_repeatPassword').get(0));