关闭隐藏的div onclick并切换另一个div

时间:2013-10-17 10:22:24

标签: javascript html toggle hidden

我正在使用以下代码来切换隐藏的div。

function toggle_visibility(id) {
       var e = document.getElementById(id);

          $(e).slideToggle("slow");




    }

<div id="toplinks">
<a href="../index.php">Home</a> | <a href="#" onclick="toggle_visibility('aboutus');">About Us</a> | <a href="#" onclick="toggle_visibility('contact');" >Contact us</a> | <a href="#" onclick="toggle_visibility('social');">Social Media</a> | <a href="#" onclick="toggle_visibility('contact');">Send your demo</a> | <a href="#" onclick="toggle_visibility('presskit');">Press Kit</a>
</div><!--toplinks end -->

问题是,如果我点击它们全部,那么它们将同时出现在页面中。 有没有办法自动关闭一个(如果它打开),所以如果点击只出现一个div?

2 个答案:

答案 0 :(得分:1)

您可以将您的prev id保存在变量中,如果它不为null,则再次进行切换。例如:

var prevId;

function toggle_visibility(id) {
   if(prevId && id !== prevId){
      $("#"+prevId).slideToggle("slow");
   }
   var e = document.getElementById(id);

      $(e).slideToggle("slow");
   prevId = id;

}

答案 1 :(得分:0)

首先,将panel css类添加到每个面板中,这些面板假设在导航项单击时显示和消失。

其次,将css类添加到每个 <a>标记及其名称(home,aboutus等...)

然后使用这个jQuery代码:

$(function(){
    $('#toplinks a').click(function(){
        $('.panel').hide(); // hide all panels
        if ($(this).hasClass('home')) {
            $('.panel.home').fadeIn(); // show homepage panel
        }
        else if ($(this).hasClass('aboutus')) {
            $('.panel.aboutus').fadeIn(); // show about us panel
        }
        // more items ...
    });
});

希望有所帮助。