2009-08-23 20 views
5

Estoy trabajando con JQuery y me estoy encontrando con este error extraño (o tal vez estúpido).JQuery - object.id no está definido cuando no debería ser

En mi HTML tengo:

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

Y luego, en mi código JavaScript que tengo:

validateRepeatPassword($('#id_repeatPassword')); 

Por desgracia, en la función "validateRepeatPassword":

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

por qué?

Respuesta

13

o es una referencia a un objeto jQuery, NO a una referencia de elemento DOM. Dentro de su función validateRepeatPassword hacer:

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

Si desea acceder a la propiedad del elemento DOM directa del objeto jQuery,

alert(o[0].id) 

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

o ya es un objeto jQuery – cletus

+0

lo sé, pero envolverlo dentro de la función lo haría más indulgente ya que también aceptaría elementos DOM en el argumento. No es un gran problema. –

+0

bien, pero ¿hay alguna manera de usar jQuery para recuperar el obejeto como referencia de elemento DOM en su lugar? –

2

dentro de su función o es un objeto jQuery, se debe agarrar el id con la función attr de o.

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

Pero si se quiere trabajar directamente con el elemento DOM en su función validateRepeatPassword, puede pasar una referencia al elemento:

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