Quicksand looks like it will do what you want: from the documentation - 'At the very basic level, Quicksand replaces one collection of items with another'.
I think you just need to add an element to display the results of the filtering, like so:
<ul id="flavourFilter">
<li class="vanilla">Vanilla</li>
<li class="strawberry">Strawberry</li>
<li class="asparagus">Asparagus</li>
</ul>
<div id="source">
<div id="box1" class="vanilla">
</div>
<div id="box2" class="vanilla">
</div>
<div id="box3" class="strawberry">
</div>
<div id="box4" class="strawberry">
</div>
<div id="box5" class="asparagus">
</div>
<div id="box6" class="asparagus">
</div>
</div>
<div id="display"></div>
Your jQuery would be something like:
$(function(){
//To load the unfiltered list into the display as the initial state:
$('#display').quickSand($('#source li'));
//To filter based on clicks in the menu:
$('#flavourFilter li').click(function(){
$('#display').quickSand($('#source li.' + this.className));
});
});
There's possibly a way to modify quicksand to use the same element for the source and the display (by hiding/showing elements, instead of adding and removing them from the DOM), but this should get you up and running, I think.
Let me know if you need more detail!