JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://github.com/cowboy/jquery-hashchange/raw/v1.3/jquery.ba-hashchange.js"></script>

JavaScript

var hashParameters = {};

$(window).hashchange(function(event) {
    var newParameters = getParameters(event.target.location.hash.substring(1));
    $.each(newParameters, function(key, value) {
       if(hashParameters[key] !== value) $(window).trigger(key + "-change");
        hashParameters[key] = value;
    });
});

$(window).bind("andsome-change", function() {
    alert("hi!"); 
});


function getParameters(paramString) {
    //taken from http://stackoverflow.com/questions/4197591/parsing-url-hash-fragment-identifier-with-javascript/4198132#4198132
    var hashParams = {};
    var e, a = /\+/g, r = /([^&;=]+)=?([^&;]*)/g,
        d = function (s) { return decodeURIComponent(s.replace(a, " ")); };
    while (e = r.exec(paramString))
       hashParams[d(e[1])] = d(e[2]);
    return hashParams;
}

window.location.hash = "some=value&andsome=othervalue";