jquery - 单击链接时显示一个 div 而隐藏其他 div

标签 jquery html css

当我点击导航栏链接时,我正在尝试弄清楚如何取消切换(隐藏)所有其他 div。 到目前为止,它会切换 div,但当我单击新链接时它们会保持事件状态。 我希望他们 .slideUp() 和我点击 slideDown 的那个 这是我的代码:

<script type="text/javascript">
$(document).ready(function(){

    $(".output .about , .resume").hide();
    $("#about").click(function(e)
    {
        e.preventDefault;
        $(this).find('li').toggleClass('active ');
        $(".about").slideToggle("slow");

    });

    $("#resume").click(function(e)
    {
        e.preventDefault;
        $(this).find('li').toggleClass('active');
        $(".output .resume").slideToggle("slow");

    });
});

    <div class="cont2">
        <ul>
            <a href="#" id="about"><li class="fade-in one " >About</li></a>
            <a href="#" id="resume"><li class="fade-in two">Resume</li></a>
            <a href="#"><li class="fade-in three">Portfolio</li></a>
            <a href="#"><li class="fade-in four">Contact</li></a>
        </ul>
    </div>

    <div class="output">
        <div class="about">
            <p>About</p>
        </div>

        <div class="resume">
            <p>Resume</p>
        </div>
    </div>

编辑:正常工作的代码

$(document).ready(function(){

    $(".cont1").hide();
    $(".cont1").fadeIn(1000);
    $(".output .about , .resume").hide();
    $("#about").click(function(e)
    {
        e.preventDefault();
        $(".cont2 li .active").removeClass('active');

        $(this).find('li').toggleClass('active');
        $(".about").slideToggle("slow");
        $(".resume").slideUp("slow");

    });

    $("#resume").click(function(e)
    {
        e.preventDefault;
        $(this).find('li').toggleClass('active');
        $(".output .resume").slideToggle("slow");

    });
});

最佳答案

我认为如果您对所有链接只使用一次点击事件会更好。这样你就不必到处复制你的代码了。只需使用 anchor 的 id 并将其与 divs 类(同名)配对即可。您的 HTML 中已经有了它,因此您不必更改它。

另一件事是,如果您希望 slideUp(隐藏)效果引人注目,您应该在其回调中运行 slideDown(显示)效果。换句话说,您希望在运行另一个动画之前等待一个动画停止。

这是我想出的东西:

$(".output .about , .resume").hide();

$("a").click(function (e) {
    e.preventDefault();

    var hiddenDiv = $(".output ." + $(this).attr("id"));
    var visibleDiv = $(".output > div:visible");

    // if all the divs are hidden, just show the desired one
    if (visibleDiv.is(":visible")) {
        visibleDiv.slideUp("slow", function () {
            hiddenDiv.slideDown("slow");
        });
    } else {
        hiddenDiv.slideDown("slow");
    }
});

http://jsfiddle.net/4cvnrh51/

关于jquery - 单击链接时显示一个 div 而隐藏其他 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003338/

相关文章:

javascript - document.style.getPropertyValue 与 document.defaultView.ComputedStyles

javascript - 计数器不停止,SetInterval

javascript - getElementById 类型错误 : "cannot set property ' innerHTML' of null

javascript - HTML &lt;input&gt; 必需的属性不起作用

html - 字体平滑 :antialiased Vs. 变换:透视(0);

css - 有没有办法使用 CSS 来显示/隐藏非兄弟元素?

javascript - 数组中未知大小的字符串数组

javascript - 如何让每个元素点击触发对另一个元素的另一次点击

php - WordPress 表单上所需的警报

html - 如何使背景图像大小保持其比例?