元素变得可见时的jQuery [英] jQuery when element becomes visible
问题描述
基本上,我想知道是否有一种方法可以自动运行一个函数,当一个元素隐藏或可见,而不是用户点击,但自动在另一个脚本。
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屋!