需要对 table 进行排序并获取 url 并与显示排序结果的其他人共享

Need to sort a table and get the url and share with others which shows the sorted result

我有一个 table,我正在使用 jquery.tablesorter.combined.js 和使用 saveSort 小部件对多列进行排序(使用 shift+单击) 保存排序。

有什么方法可以在服务器端对其进行排序并获取 url 以便我可以复制并粘贴 url 并通过 URL 与其他人共享此结果? 加载这个 URL 应该给我排序后的 table。

请告诉我

提前致谢

我最终制作了一个小部件来将当前排序添加到哈希中。由于无法在内部框架上设置散列,因此尚未经过彻底测试并且似乎无法在 this demo 中工作。它在整页演示中确实有效。

/*! Widget: sort2Hash */
;( function( $ ) {
'use strict';
var ts = $.tablesorter || {},
s2h = {
    init : function( c, wo ) {
        var arry, indx, len, column, direction,
            sort = s2h.getSort( c, wo );
        if (sort) {
            arry = sort.split( wo.sort2Hash_separator );
            len = arry.length;
            sort = [];
            for ( indx = 0; indx < len; indx++ ) {
                column = arry[ indx++ ];
                direction = arry[ indx ];
                if ( typeof direction !== 'undefined' ) {
                    sort.push( [ column, direction ] );
                }
            }
            if ( sort.length ) {
                c.sortList = sort;
            }
        }
        c.$table.on( 'sortEnd.sort2hash', function() {
            s2h.setHash( c, wo );
        });
    },
    getTableId : function( c, wo ) {
        return wo.sort2Hash_tableId ||
            c.table.id ||
            'table' + $( 'table' ).index( c.$table );
    },
    getSort : function( c, wo, clean ) {
        // modified original code from http://www.netlobo.com/url_query_string_javascript.html
        var name = s2h.getTableId( c, wo ).replace( /[\[]/, '\[' ).replace( /[\]]/, '\]' ),
            sort = ( new RegExp( '[\#&]' + name + '=([^&]*)' ) ).exec( window.location.hash );
        if ( sort === null ) {
            return '';
        } else {
            if ( clean ) {
                window.location.hash = window.location.hash.replace( '&' + name + '=' + sort[ 1 ], '' );
            }
            return sort[ 1 ];
        }
    },
    setHash : function( c, wo ) {
        var hash, indx,
            arry = [],
            tableId = s2h.getTableId( c, wo ) + '=',
            sort = c.sortList || [],
            len = sort.length;
        if ( len ) {
            s2h.getSort( c, wo, true ); // remove hash
            window.location.hash += ( window.location.hash.length ? '' : wo.sort2Hash_hash ) +
                 '&' + tableId +
                // flatten array, then join with separator
                [].concat.apply( [], sort ).join( wo.sort2Hash_separator );
        }
    }
};

ts.addWidget({
    id: 'sort2Hash',
    options: {
        sort2Hash_hash      : '#', // hash prefix
        sort2Hash_separator : '-', // don't '#' or '=' here
        sort2Hash_tableId   : null // this option > table ID > table index on page
    },
    init: function(table, thisWidget, c, wo) {
        s2h.init( c, wo );
    },
    remove: function(table, c) {
        c.$table.off( 'sortEnd.sort2hash' );
    }
});

})(jQuery);

$(function() {

    $( 'table' ).tablesorter({
        theme: 'blue',
        widgets: [ 'zebra', 'sort2Hash' ],
        widgetOptions : {
            // hash prefix
            sort2Hash_hash      : '#',
            // don't '#' or '=' here
            sort2Hash_separator : ',',
            // this option > table ID > table index on page
            sort2Hash_tableId   : null
        }
    });

});

我会在 fork of tablesorter 的下一次更新中包含此小部件。