需要对 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 的下一次更新中包含此小部件。
我有一个 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 的下一次更新中包含此小部件。