是否有一个事件在元素的“class”属性发生变化时触发?

时间:2011-11-28 09:06:52

标签: javascript jquery

我的页面上有一个带有几个孩子的<ul>元素。在某些时候,class属性将添加到这些孩子,

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

<ul>
  <li class='classname'>1</li>
  <li>2</li>
  <li>3</li>
</ul>

我想绑定到li元素的类更改时将触发的事件,因此我可以相应地处理它。有这样的事件吗?

3 个答案:

答案 0 :(得分:2)

我相信有一些方法可以绑定到DOM Mutation event,但我自己从未实际做过这个,也不知道它是否支持跨浏览器。

相反,只需找到实际进行更改的代码并在那里插入处理程序。

function something() {
    $('li').addClass('classname');
    doSomething(); // <-- here
}

或者,如果您希望能够将其拆分并使用事件,则可以使用jQuery触发自定义事件。

function something() {
    $('li').addClass('classname').trigger('classChange');
}

// elsewhere:
$('li').bind('classChange', function () { ... });

答案 1 :(得分:1)

我认为你需要看到这篇文章

jQuery - Fire event if CSS class changed

而我讨厌jquery,我会在纯粹的javascript上搜索

此致

答案 2 :(得分:0)

根据您要更改元素的方式,您可以使用自定义事件和自定义getter来模拟“真实”事件。