Create different sorting categories depending of Ascending/Descending mode, like this:
...
name_asc: function($elem) {
if ($elem.is('.first_static')) return "aaaa";
return $elem.find('.name').text();
},
name_desc: function($elem) {
if ($elem.is('.first_static')) return "zzzz";
return $elem.find('.name').text();
},
...
To sort, you don't need to call reloadItems
:
$('#sortByNameAsc').click()(function() {
$("#container")isotope({sortBy : 'name_asc', sortAscending : true});
});
$('#sortByNameDesc').click()(function() {
$("#container").isotope({sortBy : 'name_desc', sortAscending : false});
});
Or using a more generic approach:
<div class="option-combo sort">
<ul class="sort sort-set clearfix sortKey">
<li><a href="#" data-option-value="name" class="selected">Name</a></li>
<li><a href="#" data-option-value="category">Category</a></li>
<li><a href="#" data-option-value="date">Expiry Date</a></li>
</ul>
</div>
<div class="option-combo sort">
<ul class="sort sort-set clearfix sortOrder">
<li><a href="#" data-option-value="asc" class="selected">Ascending</a></li>
<li><a href="#" data-option-value="desc">Descending</a></li>
</ul>
</div>
And script:
$('.sort a').click(function(e) {
var $this = $(this);
// Turn 'selected' class on/off
if ($this.hasClass('selected')) return false;
$this.parents('.sort-set').find('.selected').removeClass('selected');
$this.addClass('selected');
var key = $('.sortKey a.selected').attr('data-option-value');
var order = $('.sortOrder a.selected').attr('data-option-value');
var valBy = key + '_' + order; // For instance name_asc
var valAscending = (order == "asc"); // true for 'asc', false otherwise
$("#container").isotope({sortBy : valBy, sortAscending : valAscending});
return false;
});