1

我在访问此范围时遇到问题,如何在嵌套中应用此范围。

问题是我无法在成功方法中访问 THIS。

var Module = {
    els: {
        body: $('body')
    },

    success: function(result) {
        // Body is now undefined, no access to this
        console.log(result, this.els.body);
        // Access only via Module, this should be end result

        Module.els.body.html(result)
    },

    init: function() {
        $.get('/echo/jsonp', this.success);
    }

};

Module.init();

http://jsfiddle.net/P6X8L/

4

1 回答 1

4

使用 jQuery,您可以使用$.proxy(function, context)

$.get('/echo/jsonp', $.proxy(this.success, this);

没有 jQuery,你可以使用闭包

var myContext = this;
$.get('/echo/jsonp', function(X) { myContext.success(X); );

或者

var myContext = this;
$.get('/echo/jsonp', function() { myContext.success.apply(myContext, arguments); );
于 2013-06-26T13:15:58.070 回答