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

时间:2009-08-23 02:14:01

标签: javascript jquery

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

在我的HTML中,我有:

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

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

validateRepeatPassword($('#id_repeatPassword'));

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

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

为什么?

2 个答案:

答案 0 :(得分:14)

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

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

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

alert( o[0].id )

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

答案 1 :(得分:2)

在你的函数o中是一个jQuery对象,你应该使用o的{​​{3}}函数来获取id。

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

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

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