I did some research on this a while ago. There are a bunch of Jquery scripts out there that may work for you. I found they come in a couple of varieties.
This one is reductive. It starts with all item and eliminates any items that don't include the selected criteria.
http://isotope.metafizzy.co/
This is additive. It starts with no items and displays only those items that do include the selected criteria.
http://jiren.github.io/filter.js/index.html
I have used Isotope with Modx using GetResources to populate the items being filtered.
There are lots of variations on these filters. Google around you'll find a bunch.
Good luck!