Как назначить событие при изменении класса элемента?
Вы можете переопределить ф-ю добавления класса, если вы используете jQuery, получится что-то типо этого:(function(){
    //Сохраняем ссылку на стандартный метод jQuery
    var originalAddClassMethod = jQuery.fn.addClass;
    //Переопределяем
    $.fn.addClass = function(){
        var result = originalAddClassMethod.apply(this, arguments);
        //Инициализируем событие смены класса
        $(this).trigger('cssClassChanged');
        return result;
    }
})();

$(function(){
    $("#test").bind('cssClassChanged', function(){ 
        //Отработает, как только сменится класс
    });
});
А вообще можно посмотреть в сторону angularjs с его дада-биндингом.
var observer = new MutationObserver(function (mutations) {
    mutations.forEach(function (mutation) {
        var newVal = $(mutation.target).prop(mutation.attributeName);
        if (mutation.attributeName === "class") {
            // если зашли сюда, значит класс сменился на значение из newVal
        }
    });
});

observer.observe(document.body, { // заменяем document.body на нужный нам элемент
    attributes: true
});