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

时间:2012-09-06 12:33:09

标签: javascript jquery javascript-events

  

可能重复:
  jquery event handler: div becomes visible/hidden

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

我还可以检测js是否已将元素添加到元素中吗?

我正在使用jQuery

3 个答案:

答案 0 :(得分: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中测试过!

答案 1 :(得分: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
}

答案 2 :(得分:0)

您可以订阅此类活动。您可以做的最好的是定期运行您自己的功能,以检查您关心的更改。