为什么在这种情况下test.elem未定义?

时间:2011-04-30 00:03:03

标签: javascript jquery

标题给出了我使用以下内容时出现的错误:

var test = {

    elem : undefined,

    init : function() { console.log("test.init() fired");

        elem = $("#id"); 
        console.log("elem assigned to jQuery object");

        elem.click(function() { console.log("elem clicked"); });
        console.log("elem click handler created");

    }

};

test.init();
test.elem.click();

我不明白。如果我在test.init()分配test.elem的值时运行{{1}},为什么以后尝试访问它时会不确定?

1 个答案:

答案 0 :(得分:3)

您正在init函数中创建一个名为'elem'的新引用,而不是引用test.elem。

在init内部,您需要将元素分配给'this.elem',因此它将显示为:

init : function() {
    console.log("test.init() fired");

    this.elem = $("#id"); 

    console.log("elem assigned to jQuery object");

    this.elem.click(function() {
        console.log("elem clicked");
    });

    console.log("elem click handler created");
}