【问题标题】:Tablesorter zebra doesnt stripe till sortTablesorter 斑马在排序前不会条纹
【发布时间】:2013-07-10 07:01:27
【问题描述】:

我有我的桌子,它们很棒,我可以对它们进行分类,而且效果很好,只是它们在我第一次分类之前不会做斑马条纹。我的理解是,一旦表排序器初始化,它们就会被条带化,不是这样吗?

这是 tablesorter v 2.10(最新),来自这里:http://mottie.github.io/tablesorter/docs/index.html

【问题讨论】:

  • 对我来说似乎可以正常工作...您确定已加载所有资源吗?

标签: javascript jquery css html-table tablesorter


【解决方案1】:

事实证明,如果您的表被 display: none 隐藏,或者表的父级被 display: none 隐藏,那么 zebra 小部件在第一次排序之前不会应用。

【讨论】:

  • 一旦表格可见,您可以使用 $('#your-table').trigger('update', [true]) 应用斑马小部件
【解决方案2】:

对于大多数支持 CSS3 的浏览器,您实际上不再需要使用 zebra 小部件,除非您计划过滤行(请参阅 this demo)。

否则,试试看起来像这样的 css:

table tbody > tr:nth-child(odd) > td,
table tbody > tr:nth-child(odd) > th {
    background-color: #f9f9f9;
}

【讨论】:

  • 是的,我确实需要支持过滤
  • 那么,只要表格可见,您只需使用applyWidgets method - 例如请参阅this answer,了解如何在 jQuery UI 选项卡中使用 tablesorter。
  • 它有什么理由不费心尝试在隐藏的情况下尝试做斑马?
  • 很难区分通过过滤或分页隐藏的表格行与因为它位于关闭的选项卡中而被隐藏的行之间的区别。此外,没有斑马条纹类名称应用于隐藏行,因为它只会增加在每次排序后应用小部件的延迟 - 这在大型表中尤其明显。
【解决方案3】:

您的问题很可能与您在表上初始化表排序器时表不可见 (display: none) 的事实有关。

一种可能的解决方案是仅在表可见时执行以下初始化:

if($('tab_parent_of_the_table').is(':visible')) {
    $("your_table_table").tablesorter({
       widgets: ['zebra']
    });
}

更好的解决方案是使用超时来包装可见性检查,因为通常它是在应用可见性更改之前完成的,从而导致错误的声明。 这样做:

setTimeout(function(){
    if($('tab_parent_of_the_table').is(':visible')) {
        $("your_table_table").tablesorter({
           widgets: ['zebra']
        });
    }
}, 50); 

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多