Javascript jQuery tablesorter:如何通过使用类而不是";内联JSON;?

Javascript jQuery tablesorter:如何通过使用类而不是";内联JSON;?,javascript,jquery,jquery-plugins,tablesorter,Javascript,Jquery,Jquery Plugins,Tablesorter,我在用电脑。我知道如何使用jQuery元数据插件禁用列排序: <th class="{sorter: false}">Don't sort me</th> <th data-sorter="false">...</th> 不要对我排序 但我宁愿通过设置一个类来实现这一点,这样我就不必使用额外的插件。另外,我想我记住类名要比记住这个JSON语法容易得多。如何使用以下语法执行相同的操作: <th class="not-sortable"&g

我在用电脑。我知道如何使用jQuery元数据插件禁用列排序:

<th class="{sorter: false}">Don't sort me</th>
<th data-sorter="false">...</th>
不要对我排序
但我宁愿通过设置一个类来实现这一点,这样我就不必使用额外的插件。另外,我想我记住类名要比记住这个JSON语法容易得多。如何使用以下语法执行相同的操作:

<th class="not-sortable">Don't sort me</th>
不要对我排序

我认为实现此功能的唯一方法是修改插件的源代码

在jquery.tablesorter.js的第483行:

function checkHeaderMetadata(cell) {
   if (($.metadata) && ($(cell).metadata().sorter === false)) {
       return true;
   };
   return false;
}
将此代码更改为:

function checkHeaderMetadata(cell) {
   if ((($.metadata) && ($(cell).metadata().sorter === false)) || $(cell).hasClass("not-sortable")) {
       return true;
   };
   return false;
}

现在函数
checkHeaderMetadata
也返回true,如果单元格有一个名为
notsortable

的类,则不必修改插件的源代码。假设不排序的
th
类被称为
nosort

function setupTablesorter() {
    $('table.tablesorter').each(function (i, e) {
        var myHeaders = {}
        $(this).find('th.nosort').each(function (i, e) {
            myHeaders[$(this).index()] = { sorter: false };
        });

        $(this).tablesorter({ widgets: ['zebra'], headers: myHeaders });
    });    
}

我同意,内联JSON很奇怪。如果您使用的是tablesorter v2.3或更高版本,您实际上可以使用数据角色来完成相同的任务,而不必使用元数据插件:

<th class="{sorter: false}">Don't sort me</th>
<th data-sorter="false">...</th>
。。。
干净多了。但是,请注意,它需要jQuery

有关详细信息和演示:

祝你一切顺利


从版本2.0.x开始您可以在初始化时决定不排序的列

添加一个名为
headers
的属性,并为每个所需列添加值为
false
的属性
sorter
。计数列从
0
开始

jQuery('#element').tablesorter({
    headers: {
        // first column
        0: {
            sorter: false
        },
        // third column
        2: {
            sorter: false
        }
    }
});
例子取自