元素变得可见时的jQuery [英] jQuery when element becomes visible

查看:132
本文介绍了元素变得可见时的jQuery的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本上,我想知道是否有一种方法可以自动运行一个函数,当一个元素隐藏或可见,而不是用户点击,但自动在另一个脚本。

Basically, I am wondering if there is a way to automatically run a function when an element becomes hidden or visible, not on a user click but automatically in another script.

我不希望这只是运行一次,因为元素(如滑块)不断从可见变为隐藏。

I don't want this to just run one time, because the elements (such as a slider) constantly change from visible to hidden.

jQuery可以用bind吗?例如将元素的可见性绑定到一个函数(我不知道如何写这个)

Would this be something that jQuery can do with bind? Such as binding the element's visibility to a function (I don't know how to write this)

如果你需要我详细说明我想做什么, 让我知道。感谢

If you need me to elaborate more on what I'm trying to do, let me know. Thanks

伪代码:

$('#element').bind('display:none', function);
function(){
    //do something when element is display:none
}

$('#element').bind('display:block', function2);
function2(){
    //do opposite of function
}


推荐答案

JQuery中没有检测css更改的事件。

请参阅:在jQuery中的onHide()类型事件


这是可能的:

There are no events in JQuery to detect css changes.
Refer here: onHide() type event in jQuery

It is possible:


DOM L2事件模块定义了突变事件;其中一个 - DOMAttrModified是你需要的。很明显,这些广告没有得到广泛实施,但至少在Gecko和Opera 浏览器中支持

来源:使用Jquery更改css属性时检测事件

您必须执行以下操作:

var maxTime = 2000; // 2 seconds
var time = 0;

var interval = setInterval(function () {
  if($('#element').is(':visible')) {
    // visible, do something
    clearInterval(interval);
  } else {
    if (time > maxTime) {
      // still hidden, after 2 seconds, stop checking
      clearInterval(interval);
      return;
    }

    // not visible yet, do something
    time += 100;
  }
}, 200);

这篇关于元素变得可见时的jQuery的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆