点击slidetoggle div但首先隐藏其他人 - jQuery

时间:2013-02-12 17:17:32

标签: javascript jquery

我有一个页面,当用户点击标题时,会显示以下div切换。

我想以某种方式说出是否显示任何其他div:块然后将它们设置为先显示无。

我有以下......

$('.office-title').click(function(){
     $(this).next('div').slideToggle();
     return false;
});

我的html标记就是这样......

<div class="office-row">
    <h3 class="office-title">Title</h3>
    <div class="office">sadasd</div>
</div>
<div class="office-row">
    <h3 class="office-title">Title</h3>
    <div class="office">sadasd</div>
</div>
<div class="office-row">
    <h3 class="office-title">Title</h3>
    <div class="office">sadasd</div>
</div>

5 个答案:

答案 0 :(得分:16)

</office>不是有效的结算。结账应为</div>

<div class="office-row">
        <h3 class="office-title">Title</h3>
        <div class="office">sadasd</div>
      </div>
    <div class="office-row">
        <h3 class="office-title">Title</h3>
        <div class="office">sadasd</div>
    </div>
    <div class="office-row">
        <h3 class="office-title">Title</h3>
        <div class="office">sadasd</div>
    </div>

CSS:

.office
{
    display: none;
}

和jquery:

$(function () {
    $('.office-title').click(function () {
        $(this).next('div').slideToggle();

        $(this).parent().siblings().children().next().slideUp();
        return false;
    });
});

HERE YOU CAN CHECK

答案 1 :(得分:2)

这应该这样做:http://jsfiddle.net/gKgJ7/

$('.office-title').click(function(){
   $('.office').slideUp();
   $(this).next('div').slideToggle();
   return false;
});

注意:

这不是一个有效的结束:

<div class="office">sadasd</office>
   //---------------------^^^^^^^^----should be </div>

答案 2 :(得分:0)

$('.office-title').click(function(){
     $(this).next('div').slideToggle();
     $(this).parent(".office-row").siblings().hide(); // this should help
     return false;
});

答案 3 :(得分:0)

尝试如下......它会起作用......

小提琴:http://jsfiddle.net/RYh7U/83/

    $(document).ready(function () {
        $('.office-title').next('div').slideToggle();
        $('.office-title').click(function(){   
        $('.office-title').next('div').slideUp();
        $(this).next('div').slideToggle(); 
        return false;
        });
     });

答案 4 :(得分:0)

这将关闭所有带动画的open div并打开所需的div

$('.office-title').click(function(){
     var that = $(this);
     if('.office').each(function() {
       if($(this) == $(that).next('div')) {
          $(this).slideToggle();
       }
       else {
          if($(this).css('display')!=='none') {
             $(this).slideToggle();
          }
       }
     });
     return false;
});