2012-05-16 115 views
12

我想我的事件觸發div標籤獲取「觸發器」類。 但是,我不知道如何讓它聽類添加事件。類更改的事件觸發器

你能告訴我如何或者我需要知道什麼嗎?

<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