mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
fixed destroy/remove widget issues
This commit is contained in:
parent
5c378ec2fa
commit
3e9b5d56ce
@ -867,30 +867,32 @@
|
||||
};
|
||||
|
||||
ts.destroy = function(table, removeClasses, callback){
|
||||
var $t = $(table), c = table.config,
|
||||
$h = $t.find('thead:first');
|
||||
// clear flag in case the plugin is initialized again
|
||||
table.hasInitialized = false;
|
||||
// remove widget added rows
|
||||
$h.find('tr:not(.' + c.cssHeaderRow + ')').remove();
|
||||
// remove resizer widget stuff
|
||||
$h.find('.tablesorter-resizer').remove();
|
||||
if (!table.hasInitialized) { return; }
|
||||
// remove all widgets
|
||||
ts.refreshWidgets(table, true, true);
|
||||
var $t = $(table), c = table.config,
|
||||
$h = $t.find('thead:first'),
|
||||
$r = $h.find('tr.' + c.cssHeaderRow).removeClass(c.cssHeaderRow),
|
||||
$f = $t.find('tfoot:first > tr').children('th, td');
|
||||
// remove widget added rows, just in case
|
||||
$h.find('tr').not($r).remove();
|
||||
// disable tablesorter
|
||||
$t
|
||||
.removeData('tablesorter')
|
||||
.unbind('sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave')
|
||||
.find('.' + c.cssHeader)
|
||||
.unbind('click mousedown mousemove mouseup')
|
||||
c.$headers.add($f)
|
||||
.removeClass(c.cssHeader + ' ' + c.cssAsc + ' ' + c.cssDesc)
|
||||
.find('.tablesorter-header-inner').each(function(){
|
||||
if (c.cssIcon !== '') { $(this).find('.' + c.cssIcon).remove(); }
|
||||
$(this).replaceWith( $(this).contents() );
|
||||
});
|
||||
.removeAttr('data-column');
|
||||
$r.find(c.selectorSort).unbind('mousedown.tablesorter mouseup.tablesorter');
|
||||
// restore headers
|
||||
$r.children().each(function(i){
|
||||
$(this).html( c.headerContent[i] );
|
||||
});
|
||||
if (removeClasses !== false) {
|
||||
$t.removeClass(c.tableClass);
|
||||
$t.removeClass(c.tableClass + ' tablesorter-' + c.theme);
|
||||
}
|
||||
// clear flag in case the plugin is initialized again
|
||||
table.hasInitialized = false;
|
||||
if (typeof callback === 'function') {
|
||||
callback(table);
|
||||
}
|
||||
|
@ -81,7 +81,8 @@ $.tablesorter.storage = function(table, key, val){
|
||||
v = (d !== 0) ? $.parseJSON(k[d]) || {} : {};
|
||||
}
|
||||
}
|
||||
if (val && JSON && JSON.hasOwnProperty('stringify')){
|
||||
// allow val to be an empty string to
|
||||
if ((val || val === '') && window.JSON && JSON.hasOwnProperty('stringify')){
|
||||
// add unique identifiers = url pathname > table ID/index on page > data
|
||||
if (!v[url]) {
|
||||
v[url] = {};
|
||||
@ -96,7 +97,7 @@ $.tablesorter.storage = function(table, key, val){
|
||||
document.cookie = key + '=' + (JSON.stringify(v)).replace(/\"/g,'\"') + '; expires=' + d.toGMTString() + '; path=/';
|
||||
}
|
||||
} else {
|
||||
return ( v && v.hasOwnProperty(url) && v[url].hasOwnProperty(id) ) ? v[url][id] : {};
|
||||
return v && v[url] ? v[url][id] : {};
|
||||
}
|
||||
};
|
||||
|
||||
@ -263,6 +264,8 @@ $.tablesorter.addWidget({
|
||||
var k, $tb,
|
||||
b = c.$tbodies,
|
||||
rmv = (c.widgetOptions.columns || [ "primary", "secondary", "tertiary" ]).join(' ');
|
||||
c.$headers.removeClass(rmv);
|
||||
$(table).children('tfoot').children('tr').children('th, td').removeClass(rmv);
|
||||
for (k = 0; k < b.length; k++ ){
|
||||
$tb = $.tablesorter.processTbody(table, b.eq(k), true); // remove tbody
|
||||
$tb.children('tr').each(function(){
|
||||
@ -679,7 +682,7 @@ $.tablesorter.addWidget({
|
||||
innr = '.tablesorter-header-inner',
|
||||
firstRow = hdrCells.eq(0).parent(),
|
||||
tfoot = $table.find('tfoot'),
|
||||
t2 = $table.clone(), // clone table, but don't remove id... the table might be styled by css
|
||||
t2 = wo.$sticky = $table.clone(), // clone table, but don't remove id... the table might be styled by css
|
||||
// clone the entire thead - seems to work in IE8+
|
||||
stkyHdr = t2.children('thead:first')
|
||||
.addClass(css)
|
||||
@ -791,6 +794,7 @@ $.tablesorter.addWidget({
|
||||
.removeClass('hasStickyHeaders')
|
||||
.unbind('sortEnd.tsSticky pagerComplete.tsSticky')
|
||||
.find('.' + css).remove();
|
||||
if (wo.$sticky) { wo.$sticky.remove(); } // remove cloned thead
|
||||
$(window).unbind('scroll.tsSticky resize.tsSticky');
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user