2012-05-16 78 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