Задать вопрос
mrdubz
@mrdubz
front end developer

Как отследить появление класса у элемента?

Есть группа элементов, у у них по очереди и не только периодически появляется некий класс (представим, что нет несжатых исходников всех остальных библиотек и скриптов). Как отследить появление и удаление этого класса и по этому событию выполнить другое действие?
  • Вопрос задан
  • 11027 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 2
IonDen
@IonDen
JavaScript developer. IonDen.com
Вам потребуется MutationObserver.
Вот статья на хабре: habrahabr.ru/post/202366
Вот описание: https://developer.mozilla.org/ru/docs/Web/API/Muta...
Ответ написан
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Потребуется и MutationObserver, и Mutation Events для IE10 и ниже.
В итоге получается вот так, включая полифилл

var observeObject = function () {
	var _class = {
		init: function (selector, callback) {
			var element = document.querySelector(selector);

			try {
				var observer = new MutationObserver(function (mutations) {
						mutations.forEach(function (mutation) {
							callback(mutation.target, mutation.attributeName, mutation.oldValue);
						});		
					});

				observer.observe(element, {
					attributes: true,
					subtree: true,
					attributeOldValue: true
				});
			} catch (z) {
				element.addEventListener('DOMAttrModified', function (e) {
					callback(e.target, e.attrName, e.prevValue);
				}, false);
			}
		}
	};

	return _class;
}();

/* А тут инициализируем отслеживание в элементе, передавая селектор */
$(function () {
	observeObject.init('селектор"]', function (target, name, oldValue) {
		/* ссылка на Node, имя атрибута, предыдущее значение */
		console.log(target, name, oldValue);
	});
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
if ($("selector").hasClass('class')) {
// есть класс
}
Ответ написан
Ваш ответ на вопрос

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

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