jquery hide()flash的计时问题

时间:2011-07-25 15:59:49

标签: jquery flash datatables

我正在使用DataTable和TableTool插件导出CSV和剪贴板,它运行得非常好......直到我决定让我的页面有点花哨。所以我在页面上有一些数据表。在启动时,我做

$('.dataTables_wrapper').each( function() {
  $(this).hide();
});

我会在需要时滑动它们()。问题是:当表再次可见时,TableTool按钮不再起作用。如果我省略了$(this).hide(),那么使用slideToggle()效果就可以了。

我做了一些调查,现在我的想法是: - TableTool插件使用flash。每个按钮实际上都是一个flash对象。 - 调用$(this).hide()时,尚未加载Flash内容。而且不知何故,这会阻止它加载。我不确定这是否是正确的浏览器行为,但它在Chrome,FF和Opera中非常一致。

有人可以建议解决这个问题吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

这里的技巧是要意识到在初始化期间隐藏元素时,它们没有任何高度或宽度 - 因此用于TableTools中的文件和剪贴板交互的Flash按钮没有任何大小(即它们是0px x 0px),您应该可以使用Firebug / Inspector进行确认。

问题的解决方案在于TableTools API - 基本上您需要做的是当表(以及TableTools按钮)再次可见时,您需要调整按钮的大小以便用户有一个区域可以点击。

你想要的两个函数是:fnResizeRequired和fnResizeButtons

http://datatables.net/extras/tabletools/api#fnResizeRequired http://datatables.net/extras/tabletools/api#fnResizeButtons

第一个检查是否需要调整大小,第二个将检查实际调整大小(您可以每次调用第二个,除了几个时钟周期之外没有任何伤害)。

希望能做到这一点: - )

作为参考,DataTables论坛也回答了这个问题:我刚刚在DataTables论坛中回答了这个问题,该论坛也提出了这个问题:http://www.datatables.net/forums/discussion/5859

阿伦