奇怪的jQuery dataTables呈现问题

时间:2010-10-29 18:40:44

标签: jquery events datatable tabs jquery-ui-tabs

我正在开发一个使用菜单(fg.menu)和jQuery UI标签的网络应用。这些工作很棒。我现在正在尝试将dataTables插件应用到我正在我的选项卡中加载的表(通过Ajax)。这些表是在服务器端生成的(JSON现在不是一个选项),并且位于我加载到选项卡中的静态文件中。这些表具有指向其他表的下钻链接。这些通过我的选项卡选项中的事件处理加载到当前选项卡中:

load: function(event, ui) 
{
  //alert ("load is called");

  $('a', ui.panel).live('click', function() 
  {      
      // now load the href into the tab
      $(ui.panel).load(this.href);
      // alert ("live click is called");

      // Set up the dataTable
      oTable = $('.my_table').dataTable( 
      { 
         "sScrollX": "100%",
         "bPaginate": false,
         "bJQueryUI": true,
         "bInfo": false,
         "bDestroy": true,
         "bRetrieve": true,
         "sDom": '<"H"r>t'
       } );

  return false;
  });

}  // end of load:

我还通过菜单链接加载器(具有不同的事件)初始化dataTables,这可以正常工作,就像任何初始选项卡选择渲染一样。

当我单击表格中的链接时,子表格将显示在选项卡中,但dataTable不会生效。我注意到当我点击一个新选项卡时,表格会在加载新选项卡之前暂时闪烁dataTable渲染。所以,我添加了警报(在上面的代码中注释掉)以查看事件是如何触发的,并且看到,dataTables开始正确渲染。当我删除警报时,它会返回到普通表。

我已经尝试过将dataTable init移动到我想到的任何地方,在各个地方显式调用fnDraw(),并在任何地方复制dataTable init,但似乎没有任何东西使它呈现除警报之外。

我在Firefox 3.6.12中使用了dataTables 1.7.3,jQuery 1.4.2和jQuery UI 1.8.5。

我猜这是某种事件问题,但我不知道任何警告会导致dataTable渲染发生的事情。有任何想法吗?我错过了一些愚蠢明显的东西吗? : - )

1 个答案:

答案 0 :(得分:0)

好的,我似乎找到了解决方法。我最初尝试在包含表片段的每个html文件中执行dataTable init。它在我第一次尝试时没有用,但是当我再次尝试它时,它工作了(不知道为什么,但我还是会接受它。那个事件/渲染问题仍然让我烦恼,但至少现在我不知道不得不担心这个应用程序。接下来:让后退按钮跟踪不仅仅是标签,而是选项卡内的内容链接: - )