【发布时间】:2012-10-24 00:52:45
【问题描述】:
我在页面顶部的横幅上有一个按钮,可以在屏幕上启动多个 yui2 叠加层。每个叠加层都有一个关闭按钮(它只是将可见性更改为隐藏,以便可以重复使用)。叠加层启动后,横幅上还会出现一个按钮,如果单击该按钮将关闭所有叠加层。
这使用户可以选择关闭所有或单独关闭每个。这就是我所坚持的:
如果用户关闭了单个叠加层,在我关闭叠加层后,我想检查是否还有其他叠加层处于打开状态。如果他们碰巧单独关闭了所有这些,那么我需要还原顶部的横幅并删除“关闭所有按钮”。
我可以通过以下方式搜索所有叠加层:
var elements = YAHOO.util.Dom.getElementsByClassName('test');
我想不出每次他们关闭叠加层时我需要做的逻辑来遍历该数组以查看所有这些都设置为隐藏时的可见性。如果是,则执行一个函数。如果页面上仍有任何可见的叠加层,则什么也不做。
这是我想出的答案。只是不确定它是否正确。
var elements = document.getElementsByClassName('test');
var visiblecounter = 0;
for (var i = 0; i < elements.length; i++) {
if(elements[i].style.visibility!='hidden'){
alert("not hidden");
visiblecounter ++;
}
}
if(visiblecounter > 0){
alert("all overlays are closed individually. you can remove close all button");
}
【问题讨论】:
-
我找到了这个,它与我需要的很接近。只是以非 jquery 方式。 link
-
如果您要打开叠加层,为什么不使用一个在打开时递增并在关闭时递减的计数器:如果为 0,则您处于初始状态。
标签: javascript dom-events yui2