Advertisement
Guest User

portfolio.js

a guest
Dec 7th, 2012
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Custom sorting plugin
  2. (function ($) {
  3.     $.fn.sorted = function (customOptions) {
  4.         var options = {
  5.             reversed: false,by: function(a) { return a.text(); }
  6.         };
  7.     $.extend(options, customOptions);
  8.     $data = $(this);
  9.     arr = $data.get();
  10.     arr.sort(function(a, b) {
  11.       var valA = options.by($(a));
  12.       var valB = options.by($(b));
  13.       if (options.reversed) {
  14.         return (valA < valB) ? 1 : (valA > valB) ? -1 : 0;             
  15.       } else {     
  16.         return (valA < valB) ? -1 : (valA > valB) ? 1 : 0; 
  17.       }
  18.     });
  19.     return $(arr);
  20.   };
  21. })(jQuery);
  22.  
  23. // DOMContentLoaded
  24. $(function() {
  25.  
  26.   // bind radiobuttons in the form
  27.   var $filterType = $('#filter input[name="type"]');
  28.   var $filterSort = $('#filter input[name="sort"]');
  29.  
  30.   // get the first collection
  31.   var $applications = $('#portfolio');
  32.  
  33.   // clone applications to get a second collection
  34.   var $data = $applications.clone();
  35.  
  36.   // attempt to call Quicksand on every form change
  37.   $filterType.add($filterSort).change(function(e) {
  38.     if ($($filterType+':checked').val() == 'all') {
  39.       var $filteredData = $data.find('li');
  40.     } else {
  41.       var $filteredData = $data.find('li[data-type=' + $($filterType+":checked").val() + ']');
  42.     }
  43.  
  44.     // if sorted by size
  45.     if ($('#filter input[name="sort"]:checked').val() == "size") {
  46.       var $sortedData = $filteredData.sorted({
  47.         by: function(v) {
  48.           return parseFloat($(v).find('span[data-type=size]').text());
  49.         }
  50.       });
  51.     } else {
  52.       // if sorted by name
  53.       var $sortedData = $filteredData.sorted({
  54.         by: function(v) {
  55.           return $(v).find('strong').text().toLowerCase();
  56.         }
  57.       });
  58.     }  
  59.  
  60.     // finally, call quicksand
  61.     $applications.quicksand($sortedData, {
  62.       duration: 800,
  63.       easing: 'easeInOutQuad'
  64.     });
  65.  
  66.   });
  67.  
  68. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement