@josie
Для отслеживания изменений класса у элемента с помощью jQuery можно использовать метод .hasClass() для проверки наличия класса у элемента и методы .addClass() и .removeClass() для добавления и удаления классов соответственно.
Чтобы отслеживать изменения класса, можно использовать метод .on() для привязки обработчика событий к элементу и события DOMSubtreeModified, DOMAttrModified, MutationObserver для отслеживания изменений DOM.
Например, следующий код отслеживает изменения класса у элемента с id "myElement":
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$(document).ready(function() { var element = $('#myElement'); var classToWatch = 'my-class'; var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.attributeName === 'class' && element.hasClass(classToWatch)) { console.log('Class ' + classToWatch + ' added to element'); } else if (mutation.attributeName === 'class' && !element.hasClass(classToWatch)) { console.log('Class ' + classToWatch + ' removed from element'); } }); }); observer.observe(element[0], { attributes: true }); }); |
Этот код создает экземпляр MutationObserver, который отслеживает изменения атрибутов элемента myElement. Когда класс "my-class" добавляется или удаляется из элемента, выводится соответствующее сообщение в консоль.
@josie
Примечание: Событие MutationObserver может не срабатывать на изменения классов через JavaScript, при использовании методов .addClass() и .removeClass(). Если требуется отслеживать изменения класса, произошедшие через JavaScript, можно использовать кастомные события.
Например, следующий код позволяет отслеживать добавление и удаление класса у элемента с помощью кастомных событий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$(document).ready(function() {
var element = $('#myElement');
var classToWatch = 'my-class';
function checkClassChange() {
if (element.hasClass(classToWatch)) {
element.trigger('classAdded');
} else {
element.trigger('classRemoved');
}
}
element.on('classAdded', function() {
console.log('Class ' + classToWatch + ' added to element');
});
element.on('classRemoved', function() {
console.log('Class ' + classToWatch + ' removed from element');
});
setInterval(checkClassChange, 100);
});
|
Этот код устанавливает обработчики событий classAdded и classRemoved, которые срабатывают при добавлении и удалении класса "my-class" соответственно. Функция checkClassChange() вызывается каждые 100 миллисекунд и проверяет, есть ли класс "my-class" у элемента. Если класс был добавлен или удален, соответствующее кастомное событие вызывается и выводится сообщение в консоль.
Помимо этого, можно также использовать методы MutationObserver и .hasClass() в сочетании для отслеживания изменений класса у элемента.