carolineschnapp
5/8/2014 - 2:16 AM

Collection sort (alternative)

Collection sort (alternative)

<div> 
  <label>Sort by</label> 
  <select class="sortBy">
    <option value="price-ascending">Price: Low to High</option>
    <option value="price-descending">Price: High to Low</option>
    <option value="title-ascending">A-Z</option>
    <option value="title-descending">Z-A</option>
    <option value="created-ascending">Oldest to Newest</option>
    <option value="created-descending">Newest to Oldest</option>
    <option value="best-selling">Best Selling</option>
  </select>
</div>
<script>
var re = /sort_by=([a-z\-]+)/,
    match,
    search = location.search,
    currentOrder = 'title-ascending';
if (search === '') {
  search = '?sort_by=' + currentOrder;
}
else {
  match = search.match(re);
  if (match === null) {
    search += '&sort_by=' + currentOrder;
  }
  else {  
    currentOrder = match[1];  
  }
}
jQuery('.sortBy')
  .val(currentOrder)
  .bind('change', function() {
    location.href = location.protocol + '//' + location.host + location.pathname + search.replace(currentOrder, $(this).val());
  });
</script>