[jQuery] Tablesorter - sort callback or sort based on external options...
I have a table with a single column whose cells contain complex markup.
Let's say this markup contains a name and a price:
<div>
<span class="item-name">Name</span>
<span class="item-price">70</span>
</div>
I have external links that let you sort on name or price:
var sort_by = 'name';
$('#sort-by-price').click(
function(){
sort_by = 'price';
$('#results').trigger('sorton', [[[0, 1]]]);
return false;
}
);
I have a custom parser and data retriever:
$.tablesorter.addParser({
// set a unique id
id: 'itemsort',
is: function(s) {
return true;
},
format: function(s) {
return s;
},
type: 'numeric'
});
results.tablesorter({
headers: {
0: {
sorter:'hotelsort'
}
},
textExtraction: extractSortData
});
function extractSortData(n)
{
var node = $(n);
if(sort_by == 'price')
{
return node.find('span.item-price').text();
}
else if(sort_by == 'name')
{
return 1 /* for the purposes of the example*/;
}
}
However, this parser is only called once when the tablesorter is
initialized, so regardless of the click the table is still sorted by
name not by price. How do I make tablesorter reparse the table with new
values?