2012-05-28 29 views
0

我想分配$阿賈克斯()函數,以便它仍然可以在下一次函數被調用內部的變量中......

這是可能?

var xxx = 1;沒有做這項工作。

謝謝!

回答

2

我認爲你應該做這樣的事情,並避免 DOM操作爲...

(function($){ 
    var YourApp = { 
     var your_vault : "", 

     binders : function(){ 
      $('#button').on('click',YourApp.ajaxRequest); 
     }, 
     ajaxRequest : function() { 
      // Do something with YourApp.your_vault  
      $.ajax({ 
       url: 'http://someurl.com', 
       succes: function(){ 
        // Modifying your value: 
        YourApp.your_vault = 'A wonderfull new value'; 
       } 
      }); 
     } 
    }; 
    YourApp.binders(); 
})(jQuery); 

因爲我沒有從你的應用程序真正的代碼我無法給出更精確的代碼,但我想你會明白的。

關鍵的想法是範圍。無論何時您將自己的變體放在更高的範圍內,您都可以使用var關鍵字在較低範圍內修改它,而不使用

2

該變量必須存儲在一個靜態位置,例如,隱藏的輸入或數據屬性。

$('#hiddenId').val(1); 
// Or 
$('#someFooId').data('last-ajax-value', 1); 

下一次調用該函數,用這個來獲取前值:

var lastValue = $('#hiddenId').val(); 
// Or 
var lastValue = $('#someFooId').data('last-ajax-value'); 

data docs:

說明:與匹配的元素相關聯存儲任意數據

+0

我認爲這不是*必須*。你的解決方案更快,但不是最好的。如果他已經全部設置在一個對象內部,他可以改變對象的屬性並在以後重用。 –

+0

@AntonioLaguna。可能是真的,**很難分辨出他的問題的最佳方式是什麼** :( – gdoron

+0

非常人爲的解決方案,他可以將數據存儲在更高範圍內的任何變量中,而不會回顧到附加到DOM元素 – lanzz

1

如果您的變量是在glob中定義的等級,那麼它可以在許多地方使用。

您需要了解variable scoping,這同樣適用於javascript,無論它運行哪個函數。

+0

+1爲鏈接... TFS – Karma