繁体   English   中英

我必须单击两次以使div可见。 怎么解决?

[英]I have to click twice to make the div visible. How to solve?

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相同。

我知道出了什么问题,但是我不知道如何解决。

您不需要额外的功能。 因为您将哪个div是可见的div存储在“ visibleDivId”中,所以只需要隐藏该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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM