在ajax帖子中维护jquery对象

时间:2014-02-25 13:59:46

标签: javascript jquery ajax jquery-datatables

我想在ajax调用中维护datatable对象。请参考以下代码

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

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



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

第一次加载页面时,它会调用这个函数并找到一些数据表对象,然后它会发出一些ajax帖子,那时它也会触发相同的函数并找到数据表对象。

所以,我想在第一次加载页面时维护$ datatable对象,在一些ajax帖子中我想将这个相同的对象用于其他目的,我如何在ajax帖子中维护$ datatable对象。

如果我将该对象添加到“this.dataTableObj”,我可以在ajax post中获取旧对象的值。这是否是在javascript中维护现有对象的正确方法。

谢谢,

1 个答案:

答案 0 :(得分:0)

嗯“this”总是指调用对象。 但如果你打电话

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

可以使用call,apply或bind方法覆盖它

 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];
          }
    ...............................................
    }
})();