У меня есть кнопка на баннере в верхней части моей страницы, на которой накладывается несколько накладок 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] (http://stackoverflow.com/questions/1222853/use-jquery-to-check-if-all-divs-are-hidden) – Gabriel
Если вы открываете накладки, почему бы вам просто не использовать счетчик, который увеличивается при открытии и уменьшается при закрытии: если 0 находится в исходном состоянии. –