2012-05-16 8 views
12

Я хочу, чтобы мое событие, вызванное тегом div, приобрело класс триггера. , но я не знаю, как заставить его слушать событие добавления класса.event trigger при изменении класса

Не могли бы вы рассказать мне, как или что мне нужно знать?

<div id="test">test</div> 

<script type="text/javascript"> 
    document.getElementsById.setAttribute("class", "trigger"); 

    function workOnClassAdd() { 
     alert("I'm triggered"); 
    } 
</script> 
+0

ли вам точно знать, класс будет обновляться с '.setAttribute()' или вы говорите в более произвольных условиях (то есть вы хотите, чтобы обработчик события огня даже если пользователь меняет класс через Firebug)? – jaredhoyt

+1

FYI http://stackoverflow.com/questions/1950038/jquery-fire-event-if-css-class-changed – Dasarp

+0

ничего себе, хорошо! Спасибо. –

ответ

13

Ну было mutation events, но они устарели и в будущем будет Мутация наблюдателями, но они не будут полностью поддерживаться в течение длительного времени. Так что вы можете сделать в среднем?

Вы можете использовать таймер для проверки элемента.

function addClassNameListener(elemId, callback) { 
    var elem = document.getElementById(elemId); 
    var lastClassName = elem.className; 
    window.setInterval(function() { 
     var className = elem.className; 
     if (className !== lastClassName) { 
      callback(); 
      lastClassName = className; 
     } 
    },10); 
} 

Запуск Пример: jsFiddle

+0

спасибо! хорошего дня. –

+0

Был взломан, чтобы не ссылаться на ваш ответ отлично ... В любом случае это может быть сделано с помощью [этого плагина легко] (https://github.com/kapetan/jquery-observe) ... Мой ответ на аналогичный вопрос [ здесь] (http://stackoverflow.com/a/23458573/2260614) .. *** Надеюсь, это поможет кому-то *** – Bhavik

+2

Наблюдатели за мутацией доступны в эти дни, woooohoooo! – johndoevodka