jQuery tablesorter:如何使用类而不是"内联JSON"禁用列上的排序?

And*_*rew 6 javascript jquery tablesorter jquery-plugins

我正在使用jQuery tablesorter插件.我知道如何使用jQuery Metadata插件禁用对列的排序:

<th class="{sorter: false}">Don't sort me</th>
Run Code Online (Sandbox Code Playgroud)

但我宁愿通过设置一个类来做到这一点,所以我不必使用额外的插件.另外我想我会比记住这个JSON语法更容易记住类名.如何使用以下语法执行相同的操作:

<th class="not-sortable">Don't sort me</th>
Run Code Online (Sandbox Code Playgroud)

Eri*_*lje 17

您不必修改插件的来源.假设您的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 });
    });    
}
Run Code Online (Sandbox Code Playgroud)


ben*_*een 16

我同意,内联JSON很奇怪.如果您正在使用tablesorter v2.3或更高版本,您实际上可以使用数据角色执行相同的操作 - 而不必使用元数据插件:

<th data-sorter="false">...</th>
Run Code Online (Sandbox Code Playgroud)

更清洁.但请注意,它需要jQuery.

有关更多信息和演示:http: //mottie.github.io/tablesorter/docs/example-parsers-jquery-data.html

祝一切顺利!


Arx*_*sos 11

我认为让这个工作的唯一方法是修改插件的源代码.

jquery.tablesorter.js,第483行:

function checkHeaderMetadata(cell) {
   if (($.metadata) && ($(cell).metadata().sorter === false)) {
       return true;
   };
   return false;
}
Run Code Online (Sandbox Code Playgroud)

将此代码更改为:

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

现在checkHeaderMetadata,如果单元格有一个名为的类,则该函数也返回true not-sortable.