jquery - 使用带有列跨度的 jQuery Tablesorter

标签 jquery html-table tablesorter

我正在使用 jQuery tablesorter 插件对包含 14 列的表进行排序。然而,每隔一段时间我就需要插入一行跨越所有 14 列。但这似乎破坏了排序功能(只有第一列排序,所有其他列都被破坏)。

JavaScript 错误表明 jquery.tablesorter.js 在此返回语句上失败:

function getCachedSortType(parsers,i) {
    return parsers[i].type;
};

有人知道如何让排序忽略一行吗?

这是我当前的代码(我不会对前两列进行排序只是为了简化事情):

$("#myTableId").tablesorter({
    textExtraction: function(node){
        var cellValue = $(node).html();
        return (cellValue == null ? "" : cellValue);
    },
    headers: {
        0: {sorter:'text'},
        1: {sorter:'text'},
        2: {sorter: false},
        3: {sorter: false},
        4: {sorter: false},
        5: {sorter: false},
        6: {sorter: false},
        7: {sorter: false},
        8: {sorter: false},
        9: {sorter: false},
        10: {sorter: false},
        11: {sorter: false},
        12: {sorter: false},
        13: {sorter: false}
    }
});

最佳答案

该插件有一个插件:

https://github.com/ascii-soup/Tablesorter-Static-Row-Plugin

另一种方法是,使用 tablesorter 插件中的 sortStartsortEnd 绑定(bind),您可以有一个函数在排序之前删除跨行的列,并有一个函数添加排序后他们又回来了。上面的插件不适用于跨越所有列的行,因此需要两者的组合。

这是实现此目的的一种方法 - 在排序之前临时删除 colspan 并添加列,并在排序之后撤消更改(假设跨越所有列的行具有类 fullSpan):

$("#myTableId").bind("sortStart",function() { 
        var colCount = getColCount();
        $('tbody .fullSpan').each(function() {
            $(this).removeAttr('colspan');
            for (var i= 0; i < colCount; i++) {
                 $(this).append('<td class="temptd"></td>');
            }
        }); 
}).bind("sortEnd",function() { 
        var colCount = getColCount();
        $('.temptd').remove();
        $('tbody .fullSpan').each(function() {
                 $(this).attr('colspan', colCount);
        });
}); 

如果需要,您可以将其与静态行插件结合使用(添加小部件和 static 类)。

看看这个jsfiddle:http://jsfiddle.net/DrZgM/20/

附注静态行插件在最新的 JQuery 中存在一个错误 - 已嵌入到上面的 JSfiddle 中。

关于jquery - 使用带有列跨度的 jQuery Tablesorter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12920088/

相关文章:

html - 三重分组的表格数据 - 如何显示?

jQuery Tablesorter - 带有 Zebra 小部件的多个表 - 每个表添加不同的颜色

javascript - IE中的iFrame调整大小问题

javascript - 如何使用 Javascript、php 等将 html + CSS 页面转换为 pdf?

javascript - Masonry:div 布局有问题

jquery - 如何让 Twitter Bootstrap jQuery 元素(工具提示、弹出窗口等)正常工作?

jquery - 将 td 宽度扩展到容器的大小之外

javascript - 如何用JS添加表格过滤器?

jQuery tablesorter - 不对具有格式化货币值的列进行排序

javascript - Tablesorter - 按 td 类排序