Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在这个场景中test.elem没有定义?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么在这个场景中test.elem没有定义?

Javascript 为什么在这个场景中test.elem没有定义?,javascript,jquery,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 c

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

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
赋值,为什么我稍后尝试访问它时它会未定义?

您正在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");
}

我真是个白痴。当你知道10个小时后,可能是下班的时候了。是的,我完全搞错了。我在其他地方都是正确的,但忘记了这一点。我工作太久了。谢谢你的第二双眼睛!