2014-02-25 64 views
0

我想在ajax調用中維護數據對象。請參考下面的代碼在ajax中維護jquery對象

$(function(){ 
    function applyDataTables(options) { 

      //datatable object 
      var $datatable = $("#table1").dataTable(options); 



      if (some condition) { 
       this.dataTableObj = []; 
       this.dataTableObj.push($datatable); 
      } else { 
       $datatable = dataTableObj[0]; 
      } 
    ............................................... 
    } 
})(); 

第一次頁面加載,它會調用這個函數,並找到一些DataTable對象,經過我做一些Ajax的職位,時候也就會觸發同樣的功能,並找到DataTable對象。

因此,我想維護$第一次加載頁面時,在一些AJAX帖子我想爲其他目的使用這個相同的對象,我怎麼能維護ajax後美元數據對象的$ datatable對象。

,如果我這個對象添加到「this.dataTableObj」我可以能夠得到老對象的值在AJAX post.whether它是在JavaScript保持現有對象的正確途徑。

謝謝,

回答

0

那麼「這個」總是指調用對象。 但如果調用

applyDataTables(options) //this will be window object; 

,它可以通過調用來重寫,應用或綁定方法

applyDataTables.call(someObj,options) //this will point to someObj 

在你的函數這可能會造成混淆。 如果您將它傳遞給某個回調函數,則可以通過調用或應用方法來重寫此函數。

因此,不要將datatableObj存儲在此中,而是可以將其存儲在某個全局命名空間,其範圍將在所有ajax調用上。

可以定義

var globV={ 
    dataTableObj:[] 
}; 

//你可以使用不同的命名空間,而不是過多的globV

$(function(){ 
    function applyDataTables(options) { 

      //datatable object 
      var $datatable = $("#table1").dataTable(options); 



      if (some condition) { 
       globV.dataTableObj = []; 
       globV.dataTableObj.push($datatable); 
      } else { 
       $datatable = globV.dataTableObj[0]; 
      } 
    ............................................... 
    } 
})();