代码之家  ›  专栏  ›  技术社区  ›  Stefan Kendall

jQuery tablesorter-头中的rowspan导致异常行为

  •  4
  • Stefan Kendall  · 技术社区  · 14 年前


    http://progamonth.com/files/testfile.html

    期望的行为:
    理想情况下,任何带有 colspan 不应该影响分类。现在,它们接收排序按钮,即使我指定 headers: {index: {sorter: false}}

    我无法复制的工作示例:
    http://lovepeacenukes.com/tablesorter/2.0/docs/

    这一页似乎显示了这种行为的工作,但我只是无法复制这一点。rowspan的例子甚至没有手动关闭那些标题,所以发生了什么?!我确实看到示例中的colspan头没有 header 类,但这似乎是由tablesorter插件应用的。

    有人知道发生了什么事吗?

    alt text http://progamonth.com/files/working.png

    不工作图片: alt text http://progamonth.com/files/notworking.png

    4 回复  |  直到 14 年前
        1
  •  2
  •   red-X    14 年前

    此功能已禁用,如此处所述: link text

    我找到了另一种方法来达到同样的效果,在表排序器js的第298行中有这样的代码规则:

    $tableHeaders = $("thead th",table);
    

    把它改成

    $tableHeaders = $("thead th:not([colspan])",table);
    

    编辑: 更改了代码和位置

        2
  •  3
  •   Borgar    14 年前

    $(document).ready(function(){
      $('#rowspan').tablesorter({
        headers: {
          4: {sorter: false},
          5: {sorter: false},
          6: {sorter: false},
          7: {sorter: false}
        } 
      });
    });
    

    如果你知道 colspan>1 是一个安全的标准,那么我将推断如下标题索引:

    $(function(){
      var headers = {};
      $('#rowspan thead th').each(function(i,h){
        if (this.colSpan>1) { headers[i] = { sorter: false }; }
      });
      $('#rowspan').tablesorter({
        headers: headers
      });
    });
    

    一个“有效”的例子: http://jsbin.com/ucija3

    所以,我想我对你的问题的最终答案是:这个插件的当前版本不适用于row或colspan。

    更新:

    一个简单的补丁程序可以实现这一点:

    在函数中 buildHeaders $tableHeaders = $("thead th",table); 收件人:

    $tableHeaders = $("thead th:not([colspan]),thead th[colspan=1]",table);
    

    将配置参数添加到 (第290行):

    function buildHeaders(table, config) {  # ...
    

    $tableHeaders (第299行):

    $tableHeaders = $("thead th",table).filter( config.headerFilter || '*' );
    

    调用config时将其传递给buildHeaders(第504行):

    $headers = buildHeaders(this, config);
    

    初始化tablesorter时添加筛选器:

    $(function(){
      $('#rowspan').tablesorter({
        headerFilter: function(){ return this.colSpan == 1; }
      });
    });
    

    Here is a pre-patched version headerFilter and a demo of it in action.

        3
  •  1
  •   technoTarek    14 年前

    仅供参考,red-X提供的修复程序:

    把它改成

    th:not([colspan]),表);

        4
  •  0
  •   MW_dev    14 年前

    我还没有完全测试这个,但我建议更新你的文件类型。根据经验,表分类器(以及jQuery)对文档类型非常敏感。

    演示使用以下内容:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    

    编辑:

    我确实认为jQuery的版本可能是一个问题,但我使用的是1.3.2,使用的是与您相同的资源。