检查元素是否将状态从隐藏更改为可见

Checking if element change state from hidden to visible

本文关键字:隐藏 元素 是否 状态 检查      更新时间:2023-09-26

可能的重复项:
jQuery事件处理程序:div变得可见/隐藏

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

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

我正在使用jQuery

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

您可以使用 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中测试!

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

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
}
没有

这样的活动可以订阅。你能做的最好的事情就是定期运行你自己的函数来检查你关心的变化。