我如何打开div关闭所有其他div?

时间:2010-07-27 09:17:24

标签: jquery html slide

我目前在我的网站顶部有2个面板(div)。当您单击链接时,它将下拉面板。当你点击另一个链接时,我希望它向上滑动任何打开的div然后一旦它向上滑动,打开被点击的div。

我目前有这个:

$(document).ready(function(){
$(".btnSlideL").click(function(){
    $("#clientLogin").slideUp('fast');
  $("#languages").slideToggle("fast");
  $(this).toggleClass("active");
});
});

$(document).ready(function(){
$(".btnSlideC").click(function(){
  $("#languages").slideUp('fast');
  $("#clientLogin").slideToggle("fast");
  $(this).toggleClass("active");
});

});

和HTML:

<div id="languages" class="topPanel">
    <div class="topPanelCont">
        languages
    </div>
</div>

<div id="clientLogin" class="topPanel">
    <div class="topPanelCont">
        client login
    </div>
</div>

<div id="container">
    <div id="containerCont">
        <div id="headerTop">
            <a href="#" title="#" class="btnSlideL">Languages</a>
            <a href="#" title="#" class="btnSlideC">Client Login</a>
        </div>

但我觉得它有点啰嗦。

然后会发生什么,Div会在点击时打开,但是如果你点击另一个,它会在顶部打开,而另一个在下面关闭。

我想要实现的一个很好的例子是here

点击顶部的链接。

2 个答案:

答案 0 :(得分:0)

您希望在结束动画结束后发生开场动画。这可以通过提供第一个动画的回调来完成:

$("#clientLogin").slideUp('fast', function() { 
  $("#languages").slideToggle("fast"); 
});

答案 1 :(得分:0)

类并不是唯一的,它们本来就是......好吧,在某种程度上引用。

换句话说,有两个名为相同的类(唯一的区别是一个字母)会破坏一个类的目的。你通过给他们一个id来使他们成为独一无二的。

因此,在您的代码中,将类名前面的字母带入id

    <div id="headerTop">
        <a href="#" title="#" class="btnSlideL">Languages</a>
        <a href="#" title="#" class="btnSlideC">Client Login</a>
    </div>

像这样...

    <div id="headerTop">
        <a href="#" title="#" id="L" class="btnSlide">Languages</a>
        <a href="#" title="#" id="C" class="btnSlide">Client Login</a>
    </div>

现在您不必拥有两个相同的jquery函数,只有

$(document).ready(function(){
$(".btnSlide").click(function(){
  $(".topPanel").slideUp('fast');
  $(this).toggleClass("active");
});
$("#L").click(function() {
  $('#languages').slideDown("fast");
});
$("#").click(function() {
  $('#clientlogin').slideDown("fast");
});