Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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+jquery调用此对象的方法_Javascript_Jquery - Fatal编程技术网

从单击回调javascript+jquery调用此对象的方法

从单击回调javascript+jquery调用此对象的方法,javascript,jquery,Javascript,Jquery,我有一个类,它可以动态创建一个按钮,在单击时调用输入的函数: var TestObj = { name: "foobar", submit: function() { alert("my name is: " + this.name); }, init: function() { $('<button>').click(function() { this.submit() }).text("hello").appendT

我有一个类,它可以动态创建一个按钮,在单击时调用输入的函数:

var TestObj = {
    name: "foobar",
    submit: function() {
        alert("my name is: " + this.name);
    },
    init: function() {
        $('<button>').click(function() { this.submit() }).text("hello").appendTo("#entryFormBox");
    }
};

TestObj.init();
entryFormBox只是它进入的容器的ID

问题是,我得到了一个错误:

未捕获类型错误:this.submit不是函数

我能猜出为什么当这个函数被赋予按钮时,它就不起作用了,这不再意味着TestObj了,对吧?。但我仍然不知道如何以我尝试的方式实现这个功能。我想在按下按钮时正确调用submit函数。

问题是这是指单击回调函数。试试这个:

var TestObj={ 姓名:foobar,, 提交:功能{ 我的名字是:+this.name; }, init:函数{ var self=这个; $.clickfunction{self.submit}.texthello.appendToentryFormBox; } }; TestObj.init; 试试这个:

var TestObj = {
    name: "foobar",
    submit: function() {
        alert("my name is: " + this.name);
    },
    init: function() {
        $('<button>').click(function() { TestObj.submit() }).text("hello").appendTo("#entryFormBox");
    }
};

TestObj.init();
您可以使用Function.prototype.bind或$.proxy来设置函数调用的这一部分,因为jQuery事件处理程序中的这一部分默认设置为DOM元素

var TestObj={ 姓名:foobar,, 提交:功能{ 我的名字是:+this.name; }, clickHandler:函数{ 这个。提交 }, init:函数{ $.clickthis.clickHandler.bindthis .text你好 .附录NTRYFORMBOX; } }; TestObj.init;