jQuery tablesorter,staticwidget和sortList在一起?

时间:2016-12-09 16:42:22

标签: jquery tablesorter

我无法弄清楚为什么两者不会合作。 我有一张表可以使用表分拣机进行排序。我已将样式设置为看起来更漂亮的div,并且每行之间需要一个空格。我用一个带有CSS类的空来做这个,然后也应用'静态'小部件。这一切都很有效,在排序时,这些不可见的间距行保持不变。

当我尝试设置默认的sortList时出现问题。我尝试了下面的不同代码;试图在javascript和元数据中设置它。这两个根本不会一起工作。我可以让sortList工作得很好,只要我禁用静态小部件。但是当它们在一起时,行是静态的,但是堆叠在一起并且不在排序顺序中。

任何人都可以帮我找出让静态小部件和sortList一起工作的方法吗?谢谢!

(我在html头中加载了jQuery 2.14,tablesorter,staticRow小部件和元数据.js)

它不会以这种方式一起工作:

switch -wildcard ((Get-WmiObject -ComputerName DT-04 Win32_OperatingSystem).Caption.ToString()) 
{ 
    "*Microsoft Windows 7 Professional*" { "Found" } 
    Default { "Not Found" } 
}

但是单独使用是否合适:

$(document).ready(function(){ 
    $('#myTable').tablesorter({
        widgets: ['staticRow'],
        sortList: [[0,0]]
    });
} );

$(document).ready(function(){ 
    $('#myTable').tablesorter({
        widgets: ['staticRow']
    });
} ); 

还试过这个:

$(document).ready(function(){ 
    $('#myTable').tablesorter({
        sortList: [[0,0]]
    });
} );

1 个答案:

答案 0 :(得分:0)

问题是tablesorter在应用窗口小部件之前对表进行排序。因此,小部件在排序后设置行索引。如果您有一个小表,最简单的解决方案是在tablesorter初始化后触发排序(demo

$('#myTable')
  .tablesorter({
    widgets: ['staticRow']
   })
   .trigger("sorton", [[[0,0]]]);

如果您有更大的表,则在初始化之前需要更多时间。在这种情况下,请在trigger内添加setTimeout

更新:您可以使用以下代码阻止quicksearch隐藏所有静态行:

$('input#search').quicksearch('table tbody tr', {
  hide: function(){
    this.style.display = $(this).hasClass('static') ? "table-row": "none";
  }
});

但是你最终会遇到一些非常大的差距(demo)。

要解决此问题,您需要包含一些CSS;您需要使用!important标记来覆盖内联样式(demo)。

tr[style*="display: none"] + tr.VerticalSpacer {
  display: none !important;
}