Задать вопрос

Как назначить событие при изменении класса элемента?

Допустим через JS меняется класс элемента, можно как-то отследить это событие?
  • Вопрос задан
  • 12274 просмотра
Подписаться 3 Средний Комментировать
Решения вопроса 2
Вы можете переопределить ф-ю добавления класса, если вы используете 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 с его дада-биндингом.
Ответ написан
Комментировать
@iShatokhin
JS developer
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
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы