如何在Javascript中访问事件内的成员变量

时间:2014-04-02 13:29:21

标签: javascript jquery

我有以下javascript:

var testObj = function() {
    this.test1 = "123";
}


testObj.prototype = {
    myFunc: function() {
        var input = $('<input type=button value="clickme" />');
        $('body').append(input);
        input.click(function () {
            alert(this.test1);
        });
    }
}

$(document).ready( function() {
    var t = new testObj();
    t.myFunc();
});

我知道为什么alert语句显示未定义,但如何让它显示test1变量的实际值。

jsFiddle包含示例代码。

3 个答案:

答案 0 :(得分:2)

你可以这样做

http://jsfiddle.net/33Mtu/7/

myFunc: function() {
    var self = this;
    var input = $('<input type=button value="clickme" />');
    $('body').append(input);
    input.click(function () {
        alert(self.test1);
    });
},

当您在点击功能中说this时,this会引用所点击的项目。我将self设置为this,以便您可以在点击功能中安全地使用self

答案 1 :(得分:1)

尝试创建对象的引用以访问它,事件上的this引用发件人:

 myFunc: function() {
        var input = $('<input type=button value="clickme" />');
        $('body').append(input);
        var obj = this;
        input.click(function () {
            alert(obj.test1);
        });

答案 2 :(得分:0)

    var testObj = function() {
    test1 = "123";
}


testObj.prototype = {
    myFunc: function() {
        var input = $('<input type=button value="clickme" />');
        $('body').append(input);
        input.click(function () {
            alert(test1);
        });
    }
}

$(document).ready( function() {
    var t = new testObj();
    t.myFunc();
});