javascript - 重置功能,所以当时只有一个打开

标签 javascript jquery html css function

我又遇到了一个问题。

我在下面有这个功能,它工作得很好,除非你已经点击了一个可见的 div。我需要它来重置整个东西,然后在您单击它时运行该功能。 我现在很迷茫。

    <nav>
        <ul>
            <li id="home" onclick="showAndHidediv('homeBox', 'home');"><a href="#" class="menuHovers"><i class="fa fa-home"></i><div class="hiddenFormMouseoverButton">Home</div></a>
                <img src="GFX/arrow.png" />
            </li>
            <li id="test" onclick="showAndHidediv('testbox', 'test');"><a href="#" class="menuHovers"><i class="fa fa-dashboard"></i><div class="hiddenFormMouseoverButton">Dashboard</div></a>
            <img src="GFX/arrow.png" />
            </li>
        </ul>
    </nav>
    <div class="menuBox" id="homeBox">
        <h2>Home</h2>
        <p>Her kan du redigere dine oplysninger på forsiden. Det kan fx. være teksterne i de bokse du ser på forsiden, eller måske en udskiftning af et billede i slideren. </p>
        <ul>
            <li>
                <a href="Home.aspx">Informationsbokse</a>
            </li>
            <li>
                <a href="#">Slider</a>
            </li>
            <li>
                <a href="#">SEO</a>
            </li>
        </ul>
    </div>
    <div class="menuBox" id="testbox">
        <h2>Test</h2>
        <p>Her kan du redigere dine oplysninger på forsiden. Det kan fx. være teksterne i de bokse du ser på forsiden, eller måske en udskiftning af et billede i slideren. </p>
        <ul>
            <li>
                <a href="Home.aspx">Test 1</a>
            </li>
            <li>
                <a href="#">Test 2 </a>
            </li>
            <li>
                <a href="#">Test 3</a>
            </li>
        </ul>
    </div>


    var open = "closed";

    function showAndHidediv(id, liName) {
        $("#" + id).toggle(function () {
            $("#" + id).animate({
                display: 'block'
            }, 500);

            if (open == "open") {
                $("#" + liName + " a").removeClass('color');
                $("#" + liName + " a div").removeClass('block');
                $("#" + liName + " img").removeClass('block');
                open = "closed";
            } else {
                $("#" + liName + " a").addClass('color');
                $("#" + liName + " a div").addClass('block');
                $("#" + liName + " img").addClass('block');
                open = "open";
            }
        });
    }

最佳答案

这里是一个纯CSS标签的教程

https://css-tricks.com/css3-tabs/

<span id="tab1" class="tabNav"></span>
<span id="tab2" class="tabNav"></span>


<a href="#tab1">tab1</a>
<a href="#tab2">tab2</a>    

<article id="tab-content1">some text</article>
<article id="tab-content2">some other text</article>

我使用固定位置来防止滚动跳跃行为

.tabNav {
    position:fixed;
    left:0;
    top:0;
}
article {
    display:none;
}
#tab2:target ~ #tab-content2,
#tab2:not(:target) ~ #tab-content1 {
    display:block;
}

这是一个 jsfiddle:https://jsfiddle.net/

这是另一个 jsfiddle:https://jsfiddle.net/8fcw1nhy/

关于javascript - 重置功能,所以当时只有一个打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007736/

相关文章:

javascript - Console.log 在 Karma/Jasmine 上不能正常工作

javascript - 为什么 React 在设置状态为相同值后会第二次渲染组件?

javascript - 如果 td 中的日期早于(早于)今天的日期,则隐藏 Bootstrap 表行?

javascript - 在模糊的 iFrame 中使用 jQuery 热键

javascript - 渲染多个输入 React

jquery - Bootstrap - 显示为框的单选按钮

jquery回调被多次调用

html - 表格边框折叠问题

javascript - 当在 Chrome 中使用 JavaScript 删除必需属性时,checkValidity() 会返回 false

html - CSS 下拉菜单