jquery - 使用 jQuery 切换多个 DIV

标签 jquery toggle

我有三个信息面板(ID 为 panel-onepanel-twopanel- Three 的 div,全部具有类info-panel),我想在点击链接时滑入和滑出(它们的 ID 为 toggle-onetoggle-twotoggle- Three,都带有类 toggle)。如果单击其他链接之一时显示其中一个 div,我想隐藏可见的 div 并显示新的 div。如果单击 div 自己的链接,我想切换显示/隐藏。我使用以下代码来执行此操作:

HTML:

<ul>
    <li><a id="toggle-one" class="toggle">One</a></li>
    <li><a id="toggle-two" class="toggle">Two</a></li>
    <li><a id="toggle-three" class="toggle">Three</a></li>
</ul>

<div id="panel-one" class="info-panel"><!-- content here --></div>
<div id="panel-two" class="info-panel"><!-- content here --></div>
<div id="panel-three" class="info-panel"><!-- content here --></div>

jQuery:

$("#toggle-one").click(function () {
    if($("#panel-two").is(":visible")) {
        $("#panel-two").css("z-index", "9997").hide("slide", {direction: 'up'}, 750);
    } else if($("#panel-three").css("z-index", "9997").is(":visible")) {
        $("#panel-three").css("z-index", "9997").hide("slide", {direction: 'up'}, 750);
    }
    $("#panel-one").css("z-index", "9998").toggle("slide", {direction: 'up'}, 750);
    return false;
});

$("#toggle-two").click(function () {
    if($("#panel-one").is(":visible")) {
        $("#panel-one").css("z-index", "9997").hide("slide", {direction: 'up'}, 750);
    } else if($("#panel-three").is(":visible")) {
        $("#formlink").css("z-index", "9997").hide("slide", {direction: 'up'}, 750);
    } 
    $("#panel-two").css("z-index", "9998").toggle("slide", {direction: 'up'}, 750);
    return false;
});

$("#toggle-three").click(function () {
    if($("#panel-one").is(":visible")) {
        $("#panel-one").css("z-index", "9997").hide("slide", {direction: 'up'}, 750);
    }  else if($("#panel-two").is(":visible")) {
        $("#panel-two").css("z-index", "9997").hide("slide", {direction: 'up'}, 750);
    }
    $("#panel-three").css("z-index", "9998").toggle("slide", {direction: 'up'}, 750);
    return false;
});

它可以工作,但它非常冗长并且无法很好地扩展 - 管理三个信息 div 很好,但是如果/当需要添加更多信息时,维护起来将变得非常痛苦。我尝试过使用 Show/Hide Multiple Divs with Jquery 中概述的方法。 ,但似乎无法让它正常工作 - 切换和隐藏行为不能很好地工作(隐藏潜水显示,当它们不应该立即隐藏时以及类似的事情)。同样,我似乎无法得到 Jquery toggle on 3 divs 中显示的示例。要么去工作。

我确信有一种更简洁的方法可以做到这一点,但由于我对 jQuery 和 javascript 不太熟悉,所以我真的不知道如何整理它。解决这个问题的最佳方法是什么?

最佳答案

将面板包裹在 <div> 中与 idpanels :

<div id="panels">
  <div class="info-panel"><!-- content here --></div>
  <div class="info-panel"><!-- content here --></div>
  <div class="info-panel"><!-- content here --></div>
</div>

应该有效:

$(".toggle").on('click', function() {
    var $panel = $('#panels').children().eq($(this).parent().index());

    $panel.toggle("slide", {direction: 'up'}, 750);
    $panel.siblings().hide("slide", {direction: 'up'}, 750);

    return false;
});

关于jquery - 使用 jQuery 切换多个 DIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11075889/

相关文章:

java - 获取同一组中所有选定的切换按钮

jquery - Ajax post请求在wp主题目录中不起作用

javascript - 计算无限大父级中 HTML SPAN 的可能宽度?

c# - 需要点击按钮两次来编辑和更新gridview数据

javascript - 非 PushState 浏览器中的 JQuery Mobile 查询字符串问题

Jquery过滤列表

javascript - 将 LocalStorage 添加到暗模式切换

jquery - 左右固定菜单切换

php - 生成 session token

jquery - 在悬停时突出显示具有多个 div 的 td,取消突出显示其中一个 div