2012-06-10 72 views
0

我为菜单项创建滑出面板,因此当单击一个按钮时,面板会滑出。我需要的是当单击另一个按钮打开不同面板时使打开的面板关闭的方法。这是我的。如何在另一个div被触发时关闭切换div

<script type="text/javascript"> 
    $(document).ready(function(){ 
$(".trigger").click(function(){ 
      $(this).prev('.panel').toggle("fast"); 
    $(this).toggleClass("active"); 
    return false; 
}); 
    }); 
</script> 
<div id="menu-filter"> 
<div class="panel"> 
<-----content A-----> 
</div> 
<a class="trigger" href="#">A</a> 

<div class="panel"> 
<-----content B-----> 
</div> 
<a class="trigger" href="#">B</a> 
</div> 
+0

创建的jsfiddle一些功能,我相信我们中的几个人会看看! –

回答

2

对我来说这使事情变得更容易一些 使用最接近包裹在一个div容器

<div id="menu-filter"> 
    <div class="panel-container"> 
    <div class="panel"> 
     <-----content A-----> 
    </div> 
    <a class="trigger" href="#">A</a> 
    </div> 
    <div class="panel-container"> 
    <div class="panel"> 
     <-----content B-----> 
    </div> 
    <a class="trigger" href="#">B</a> 
    </div> 
</div> 

然后

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

    // clicked button 
    var $button = $(this); 
    // get ref to panel, go up to parent container and back down to find panel 
    var $panel = $(this).closest("panel-container").find("panel"); 

    if ($button.hasClass("active")) { 
    // we hide the open panel for this button 
    $panel.hide("fast"); 
    $button.removeClass("active"); 
    } else { 
    // hide any open panels 
    $('.panel').hide("fast"); 
    $('.trigger').removeClass("active"); 

    // show clicked 
    $panel.toggle("fast"); 
    $button.toggleClass("active"); 
    } 
}); 

每个面板/按钮,找到可以允许标记变化后来没有打破JavaScript,但是如果你有1000块面板它可能表现不佳

这段代码没有经过测试

+0

doh ..答案很简单。谢谢! –

+0

实际上有一个问题。这不再破坏触发器的面板点击。因此触发器被点击,然后面板滑出,但如果再次点击同一触发器,它只是重新加载面板。 –

+0

所以你想要的行为是触发点击打开面板;再次点击该面板或点击另一个触发器将关闭它? – house9