简体   繁体   English

一次只显示一个幻灯片切换div

[英]Allow only one slide toggle div to show at a time

I am working on a site where I have 4 expandable divs using jquery's slide toggle. 我在一个使用jquery的幻灯片切换功能有4个可扩展div的网站上工作。 All works fine but I don't want more than 1 of those divs expanded at a time. 一切正常,但我不想一次扩展多个div。 In other words: when a div is expanded, other divs that are expanded should close. 换句话说:当div扩展时,其他已扩展的div应该关闭。 Accordion isn't an option I think because all the div's styling is different. 我认为手风琴不是一个选择,因为所有div的样式都不同。 Below is my code. 下面是我的代码。

$(document).ready(function(){
// slidetoggles

    $("#tgx-window").hide();
        $("#tgx-button").show();
        $("#tgs-window").hide();
        $("#tgs-button").show();
        $("#tgm-window").hide();
        $("#tgm-button").show();
        $("#tgl-window").hide();
        $("#tgl-button").show();

    $('#tgx-button').click(function(){
    $('#tgx-button').toggleClass('closebutton');
    $("#tgx-window").slideToggle();
    });

    $('#tgs-button').click(function(){
    $('#tgs-button').toggleClass('closebutton');
    $("#tgs-window").slideToggle();
    });

    $('#tgm-button').click(function(){
    $('#tgm-button').toggleClass('closebutton');
    $("#tgm-window").slideToggle();
    });

    $('#tgl-button').click(function(){
    $('#tgl-button').toggleClass('closebutton');
    $("#tgl-window").slideToggle();
    });

HTML: HTML:

<a onclick="" class="show_hide" id="<?=strtolower($service['title']);?>-button"></a>
        <div class="slidingDiv" id="<?=strtolower($service['title']);?>-window">
            <?
            $infoBox = '<h1>'.$service['subtitel'].'</h1>';
            $infoBox .= $service['description'];
            echo replaceTags($infoBox);
            ?>
        </div>

It's a bit hard to answer this question without knowing your HTML but here is a solution I hope; 不知道您的HTML很难回答这个问题,但是我希望这是一个解决方案。

HTML (I presume): HTML(我认为):

<div id="tgx-window">tgx window</div>
<div id="tgs-window">tgs window</div>
<div id="tgm-window">tgm window</div>
<div id="tgl-window">tgl window</div>

<button id="tgx-button">Show tgx</button>
<button id="tgs-button">Show tgs</button>
<button id="tgm-button">Show tgm</button>
<button id="tgl-button">Show tgl</button>

JavaScript: JavaScript:

jQuery(function($) {
    var $windows = $('#tgx-window,#tgs-window,#tgm-window,#tgl-window'),
        $buttons = $('#tgx-button,#tgs-button,#tgm-button,#tgl-button');
    $windows.hide();

    $buttons.on('click', function(e) {
        var $id;
        e.preventDefault();
        $buttons.removeClass('closebutton');
        $id = $('#' + this.id.split('-')[0] + '-window');// Get window id
        $windows.slideUp();
        if(! $id.is(':visible') ) {
            $id.slideDown();
            $(this).addClass('closebutton');
        }
    });
});

You can see a working example here . 您可以在此处看到一个有效的示例。

Use class instead of id of button and probably its parent .tgx-window 使用class而不是按钮的id以及它的父.tgx-window

$('.tgx-button').click(function(){
    $(this).toggleClass('closebutton');
    $(this).closest(".tgx-window").slideToggle();
});

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

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