var divs = ["userMenu", "submenu"];
var visibleDivId = null;
function toggleVisibility(divId) {
if (visibleDivId == divId) {
visibleDivId = null;
} else {
visibleDivId = divId;
}
hideNonVisibleDivs();
}
function hideNonVisibleDivs() {
var i, divId, div;
for (i = 0; i < divs.length; i++)
{
divId = divs[i];
div = "#" + document.getElementById(divId).id;
if (visibleDivId == divId)
$(div).fadeIn();
else
$(div).fadeOut();
}
}
第一次工作正常。但是,当我尝试单击一个将关闭div的a元素后打开同一div时,我必须单击两次。我知道为什么,第一次单击div时,visisbleDivId与divId相同,因此visibleDivId将设置为null。第二次单击,它将消失,因为它不再与divId相同。
我知道出了什么问题,但是我不知道如何解决。
最佳答案
您不需要额外的功能。因为您在“ visibleDivId”中存储了哪个div是可见的div,所以只需要隐藏该div而不遍历其他div。
var divs = ["userMenu", "submenu"];
var visibleDivId = null;
function toggleVisibility(divId) {
if (visibleDivId == divId) {
$(visibleDivId).fadeOut();
visibleDivId = null;
} else {
if (visibleDivId) {
$(visibleDivId).fadeOut();
}
visibleDivId = divId;
$(visibleDivId).fadeIn();
}
}