I have written some JavaScript that only shows the hats of the site on which you are:
var hats = $(".wb-outer");
var currSite = document.title.split("-")[1].replace(/&/g, "&")
.replace(/Stack Exchange/g, "")
.trim();
for (var i = 0; i < hats.length; i++) {
var curr = $("#" + hats[i].id);
curr.click();
var sitesHtml = $("#wb-hat-details-info").last("p").html();
if (sitesHtml.indexOf(currSite) === -1) {
curr.hide();
}
}
What it does: it simulates a click on all hats, looks at the displayed sites where you earned the hat, and if you have not earned it on the current side, the hat gets hidden.
I have tried to put this in a userscript, but that didn't work because the Winterbash JavaScript didn't load when I tried that. You could save it in a bookmarklet and run that when you need it. Here is a one-liner that can be used for that purpose:
var h=$(".wb-outer");var c=document.title.split("-")[1].replace(/&/g,"&").replace(/Stack Exchange/g,"").trim();for(var i=0;i<h.length;i++){var n=$("#" +h[i].id);n.click();var t=$("#wb-hat-details-info").last("p").html();if(t.indexOf(c)===-1){n.hide();}}
And here is a version that highlights the hats earned on the current site, which Martin Büttner suggested:
var hats = $(".wb-outer");
var currSite = document.title.split("-")[1].replace(/&/g, "&")
.replace(/Stack Exchange/g, "")
.trim();
for (var i = 0; i < hats.length; i++) {
var curr = $("#" + hats[i].id);
curr.click();
var sitesHtml = $("#wb-hat-details-info").last("p").html();
if (sitesHtml.indexOf(currSite) !== -1) {
curr.css('background-color', '#ace89b');
}
}
One-liner:
var h=$(".wb-outer");var c=document.title.split("-")[1].replace(/&/g,"&").replace(/Stack Exchange/g,"").trim();for(var i=0;i<h.length;i++){var n=$("#" +h[i].id);n.click();var t=$("#wb-hat-details-info").last("p").html();if(t.indexOf(c)!==-1){n.css('background-color','#ace89b');}}