2016-10-24 2 views
0

Преамбула - абсолютно no jQuery!Вызов функции при добавлении/удалении CSS

мне нужно следить за конкретный DOM элемент, который у меня есть доступ к через:

var element = document.getElementById('the-element'); 

Когда класс CSS добавляется или удаляется из element, мне нужно имя класса CSS, чтобы быть доставлены в функцию.

Я рад принять разумные обходные пути.

Например:

element.onClassChange(myFunction); 

function myFunction(classname, state) { 
    console.log('The classname is '+classname+' - '+state); 
} 
+0

Является ли это проблемой? или у вас проблемы? –

+0

вы можете добавить класс, используя setAttribute ("class", "yourclass") – Araz

+3

Посмотрите на [MutationObserver] (https://dom.spec.whatwg.org/#interface-mutationobserver) и проверьте обратный вызов, если класс был изменен. – Reeno

ответ

0
<!DOCTYPE html> 
<html> 
<body> 

<p id = "classToAdd" classAdded=false>Click the button to trigger a function that will output "Hello World" in a p element with id="demo".</p> 

<button onclick="addClassToP()">Click me</button> 

<p id="demo"></p> 

<script> 
function addClassToP() { 

var pEle = document.getElementById("classToAdd"); 

pEle.className += "addedClassName"; 
pEle.classAdded = true; 

pEle.onchange(); 
} 

document.getElementById("classToAdd").onchange = function(){ 
    if(this.classAdded){ 
    alert("class added"); 
    // do something on class added 
    this.classAdded = false; // restoring the classAdded notifier attribute 
    } 
} 


</script> 

</body> 
</html> 
+0

Извините за первый ответ, я обновил ответ в ядре js :). Я добавил атрибут classAdded, который определит, добавлен ли класс или нет. Я добавил код предупреждения на событие onchange. Всякий раз, когда я добавляю класс в тег p, я устанавливаю атрибут classAdded в true и затем вызываю onchange() вручную. Вы должны установить classAdded в true и вызвать onchange() при добавлении любого класса. –