jQuery - 从外部访问switch()中的函数

时间:2016-02-25 18:24:57

标签: jquery

在我的JavaScript文档的顶部,我有一个switch()函数 - 基于用户所在的当前页面 - 声明要加载哪些JS函数,要触发哪些插件等等。 / p>

现在,在我的例子中,我们会在页面index上说我。当用户在索引页面上时,我会触发一个名为DataTables的插件(你可能知道它)。我在我的交换机功能中包含了插件调用的简化版本。

在switch函数中我还创建了一个名为refreshDataTable()的函数 - 这就是这个问题的关键 - 它应该刷新表。

$(document).ready(function(){

var currentPage = ...  

switch (currentPage) {

    case 'index':

    var table = $('#table').DataTable( {
       ajax: "data.json"
       // and many more parameters
    } );

    function refreshDataTable() {
       table.ajax.reload();
    }

    break;

}

});

// try to call function here, not working
refreshDataTable();  

到目前为止,插件按预期加载,refreshDataTable()可以从switch()函数中访问。

现在,问题是我需要从refreshDataTable()函数外部调用switch()函数。每当我尝试这样做时都会出现错误,说该功能不存在。

有没有人知道如何从switch()之外访问此函数而无需再次触发整个DataTables插件?

提前谢谢!

更新:我注意到这不起作用,因为switch()包含在document.ready函数中。为什么?简单地删除document.ready函数会不会效率低下?

1 个答案:

答案 0 :(得分:1)

尝试编写这样的代码,

(function(){

   var table;

   function refreshDataTable() {
      if(table && table.length) {
        table.ajax.reload();
      }
   }

   $(document).ready(function(){
    var currentPage = ...  
    switch (currentPage) {
      case 'index':
        table = $('#table').DataTable( {
             ajax: "data.json"
             // and many more parameters
        });
      break;
    }
  });

  refreshDataTable();
}();