jquery在上下文中调用JS方法

时间:2012-07-10 18:21:21

标签: javascript jquery

我们在应用程序中使用jQuery来进行AJAX调用。如何使用jQuery在特定上下文中使用方法?我在dojo使用dojo.hitch()进行了success。 jQuery中有类似的东西吗?以下是我们使用的示例代码。我需要在SampleMethod的上下文中执行resultSetHandler处理程序。以下代码应该 给我异常,因为jQuery在窗口上下文中不可用。你能不能让我知道。

我们正在使用function SampleMethod(){ this.invokeProcedure=function(procedurePath){ $.ajax({ type: "GET", url: procedurePath, dataType: "json", success: resultSetHandler, error: errorHandler }); } this.resultSetHandler=function(args){ //Handle the result } this.errorHandler=function(args){ //Handle the result } } var sampleObj=new SampleMethod(); sampleObj.invokeProcedure('url'); 1.3.2

{{1}}

2 个答案:

答案 0 :(得分:2)

此版本的jQuery在这一点上已经无可救药地老了,你应该升级。您要查找的功能是jQuery.proxy,仅适用于1.4 +

如果您正在升级,但您应该考虑升级到最新版本,那么您现在只有4个主要版本。

如果您在一个不允许升级3.5岁图书馆的环境中工作,请考虑为自己复制source of jQuery.proxy并使其正常工作。

答案 1 :(得分:2)

保留this并将其包装在函数中:

this.invokeProcedure=function(procedurePath){
        var savedThis = this;
        $.ajax({
                type: "GET",
                url: procedurePath,
                dataType: "json",
                success: function() { savedThis.resultSetHandler(); },
                error: function() { savedThis.errorHandler(); }
            });
    }

(可能应该将“success”函数参数传递给“resultSetHandler”。)


编辑 - 上面将在一般情况下处理这类问题,但@Blaster在评论中正确指出jQuery $.ajax机制提供了一个更简单的解决方案。可以在传入的参数对象中设置context属性,该值将用作回调的上下文。也就是说,添加:

context: this,

$.ajax参数对象可以使你的工作正常。