1

我想从失败的 jQuery 方法访问对象自己的函数。

function obj(){    
    this.send = function(){
        $.get("send.php",null,function(data){
            this.success();
        }).error(function(){ this.fail(); });
    }
    this.fail = function(){
        alert("fail");
    }
}

var o = new obj();
o.send();

给出这个错误:TypeError: this.fail is not a function

如何访问failjQuery 中的函数?

4

1 回答 1

2

在第 5 行,fail没有被同一个对象调用,因此this没有相同的引用,因此没有方法失败。我们说你改变了上下文

诀窍是使用通常称为selfor thator的变量_this。我更喜欢self.

function obj(){    
    var self = this;
    this.send = function(){
        $.get("send.php",null,function(data){
            this.success();
        }).error(function(){ self.fail(); });
    }
    this.fail = function(){
        alert("fail");
    }
}

它应该成功了,是的,javascript 看起来像一种可惜的语言。但是一旦你克服了几个问题,你就会爱上这些可能性。

于 2012-10-20T23:19:25.860 回答