2016-10-24 5 views
0

プリアンブル - 絶対にno jQuery!私は経由へのアクセス権を持っている特定のDOM要素を監視する必要がCSSがクラスの追加/削除時に関数を呼び出す

:CSSクラスをelementから追加または削除された場合

var element = document.getElementById('the-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()を呼び出す必要があります。 –

関連する問題