3

可能重复:
jquery 事件处理程序:div 变为可见/隐藏

我可以设置一个事件在隐藏某些元素然后被js设置为可见后触发吗?

我还可以检测 js 是否向元素添加了类吗?

我正在使用 jQuery

4

3 回答 3

2

是的。您可以通过事件跟踪类的添加和删除。

您可以使用事件来跟踪这一点DOMAttrModified- 顾名思义,每次修改 DOM 中任何元素的任何属性时都会触发该事件。

在这种特殊情况下,我们跟踪class我们希望跟踪的元素的属性修改。

演示:http: //jsfiddle.net/techfoobar/dnRUu/2/

在演示中,单击“切换类”按钮将类添加到第一个 DIV。您收到的警报由DOMAttrModified事件触发。

更多信息在这里:

https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference?redirectlocale=en-US&redirectslug=DOM_Events

http://www.w3.org/TR/DOM-Level-3-Events/#events-MutationEvent

免责声明:仅在 Mozilla Firefox 中测试!

于 2012-09-06T13:10:13.453 回答
1

也许您可以使用间隔来处理此类事件:

function checkIt () {
    if ($('#Element').length > 0) {
        if($('#Element').is(':hidden') == true) {
           // add class name
            alert('Element was hidden');
            $('#Element').removeClass('hidden').addClass('visible');

            // or toggle class name
            //$('#Element').toggleClass('className');

            // or remove class name
            //$('#Element').removeClass('className');

            // if you want to clear the interval
            //clearInterval(listenerID);
        }
    }
}

var listenerID;
$(function(){
    listenerID = setInterval(checkIt, 500);
});

http://jsfiddle.net/KFGrL/2/

检查元素是否有类名:

if ($('#Element').hasClass('className')) {
    // your code
}
于 2012-09-06T13:08:43.653 回答
0

没有您可以订阅的此类活动。你能做的最好的就是定期运行你自己的函数来检查你关心的变化。

于 2012-09-06T12:39:11.610 回答