2014-05-10 16 views
0

我有以下幾點:變量,可以在所有的Ajax設置使用

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

我需要做的是能夠使用所有的Ajax設置之間以下(add,並且done):

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

我該如何在函數調用中使用該變量,以便可以在所有選項之間使用該變量?

回答

0

在回調中(添加,完成,..)上下文(this)是指你的jQuery對象$('.fileupload')

所以:

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

UPDATE:

如果你想instantiale 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);} 
+0

我希望有一種方法來一次調用它。 – user3390776

+0

你不能因爲回調是一個有實現的函數。執行之間沒有傳遞代碼 –

+0

爲什麼'setTimeout()'?爲什麼要傳遞一個字符串來創建一個名爲'varName'的全局變量,該變量被分配了一個引用'window'的jQuery對象? –

相關問題