Вітання. Сьогодні розберемося як отримати подія зміни класу елемента на jQuery.
Уявіть собі ситуацію: якийсь сторонній скрипт змінює клас елемента (наприклад, додає class = fixed для header, щоб зробити його фіксованим). При цьому внести зміни в цей сторонній скрипт немає можливості, але дуже потрібно відстежити додавання цього класу елементу, щоб змінити інші елементи (і не придумувати велосепед з алгоритмом «коли цей клас додається»).
Тут і приходить на розум, що не погано було б мати подія (event), який буде викликатися (trigger) тоді, коли клас елемента змінений. На жаль jQuery саме по собі такої події не має, але можна підвісити своє подія.
Як ми це будемо робити? Подія зміни класу елемента на jQuery
Припустимо, що ізененіе класу відбувається на jQuery за допомогою функцій addClass і removeClass, в такому випадку ми просто перевизначити ці функції, і допишемо в них тригер події, до якого потім можна буде нав'язати будь-яка дія (аналогічно іншим подіям на jQuery).
Якщо ж клас змінюється вручну (наприклад через attr ( 'className', 'new class')), то в цьому випадку потрібно буде також вручну відстежувати «змінився клас», наприклад на setInterval, але ми цим займатися не будемо, і припустимо, що всі зміни класу відбуваються по addClass / removeClass.
Готово. Тепер в будь-який момент, коли вам потрібно буде відстежити зміну класу елемента, ви зможете додати таку подію до будь-якого елементу, і виконати функцію, коли клас додається або видаляється.
приклад використання
- Як звернутися до об'єкта-контейнера на PHP
- Як визначити на jquery select текст вибраного елемента
- CSS media-query визначити Windows