2012-05-16 17 views
12

Vorrei che il mio evento attivato sul tag div acquisisca la classe "trigger". ma, non ho idea di come farlo ascoltare l'evento di aggiunta di classe.evento trigger sul cambio classe

Potrebbe dirmi come o quale ho bisogno di sapere?

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

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

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

Ti di sicuro conosce la classe verrà aggiornato con '.setAttribute()' o stai parlando in termini più arbitrari (cioè vuoi il gestore di eventi al fuoco anche se un utente cambia la classe tramite Firebug)? – jaredhoyt

+1

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

+0

wow, bene! grazie. –

risposta

13

Bene c'erano mutation events, ma erano deprecato e il futuro ci saranno osservatori mutazione, ma non sarà pienamente supportato per molto tempo. Quindi cosa puoi fare nel frattempo?

È possibile utilizzare un timer per controllare l'elemento.

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); 
} 

esempio di Esecuzione: jsFiddle

+0

grazie! buona giornata. –

+0

È stato sbattuto per non aver fatto riferimento alla tua risposta perfettamente ... Comunque può anche essere fatto usando [questo plugin facilmente] (https://github.com/kapetan/jquery-observe) ... La mia risposta ad una domanda simile è [ qui] (http://stackoverflow.com/a/23458573/2260614). *** Spero che aiuti qualcuno *** – Bhavik

+2

Gli osservatori della mutazione sono disponibili in questi giorni, woooohoooo! – johndoevodka

Problemi correlati