可在所有ajax设置中使用的变量

时间:2014-05-10 05:06:54

标签: javascript jquery ajax

我有以下内容:

$('.fileupload').fileupload({
    dataType: 'json',
    add: function(e, data) {
        ...
    },
    done: function(e, data) {
        ...
    }
});

我需要做的是能够在所有ajax设置(adddone)之间使用以下内容:

var form = $(this).closest('form');

我如何在函数调用中使用该变量,以便可以在所有选项之间使用?

1 个答案:

答案 0 :(得分:0)

回调中的上下文(this)(add,done,..)引用你的jquery对象$('.fileupload')

所以:

$('.fileupload').fileupload({
    dataType: 'json',
    add: function(e, data) {
        var form = $(this).closest('form');
    //...
    },
    done: function(e, data) {
        var form = $(this).closest('form');
 //..
    }
});

更新:

如果你只想实例化form jquery对象一次,你必须在那之外实例化它,你可以在所有回调中使用它(=设置)

示例:

$('.fileupload').fileupload({
    dataType: 'json',
    add: function(e, data) {
        console.info(myForm);
    },
    done: function(e, data) {
        console.info(myForm);
    }
}).closest("form").cache('myForm') ;

已知缓存是一个jquery插件:

$.fn.cache=function(varName){var that=this;
    setTimeout(function(){window[varName]=$(that);},0);}