2014-07-15 54 views
-1

如何写js应该这样工作。当用户存在崩溃 - 全部,找到所有崩溃类并给他们类。所以结果应该是collapse class plus in class。然后做相反的过程。点击collapse-all删除所有类和刚离开折叠类。如何找到并选择特定的div与JavaScript(jquery)

的情况如下:https://www.dropbox.com/s/rpi3f92v366to4p/img.jpg

这是关于折叠所有部分在叽叽喳喳bootsrap。

!已更新! 下面是浏览器生成的代码你的建议:

<div class="collapse-all">[<a href="#">alles auklappen/einklappen</a>]</div> 
<div class="background"> 
<div class="collapse-list"> 
    <div class="content-container style999 collapse-group"> 
     <a class="mehr-pfeil" href="#">&nbsp;</a> 
     <h2></h2> 
     <div class="collapse in"> 
     <p></p> 
     <h2>&nbsp;</h2> 
     <p></p> 
     </div> 
    </div> 
    <div class="content-container style999 collapse-group"> 
     <a class="mehr-pfeil" href="#">&nbsp;</a> 
     <h2></h2> 
     <p class="collapse in"></p> 
    </div> 
    <script type="text/javascript"> 
     $('.row .mehr-pfeil').on('click', function (e) { 
      e.preventDefault(); 
      var $this = $(this); 
      var $collapse = $this.closest('.collapse-group').find('.collapse'); 
      $collapse.collapse('toggle'); 
     }); 


     $(".mehr-pfeil").click(function() { 

      if (!$(this).hasClass("mehr-pfeil")) { 
       $(this).addClass("mehr-pfeil-active"); 
      } 
      else { 
       $(this).addClass("mehr-pfeil"); 
      } 
     }); 

     $('.collapse-all').on('click', function (e) { 
     $('.collapse').toggleClass('in'); 
     }); 
    </script> 
</div> 

我也试图防止类中添加的行动用户点击链接之前:

$('.collapse-all').on('click', function (e) { 
    event.preventDefault(); 
    $('.collapse').toggleClass('in'); 
}); 

修订

对于那些会有同样问题的人,这里是解决方案:

<script type="text/javascript"> 
    $(document).on('click', '.collapse-all > a', function() { 
     var $collapseList = $(this).closest('#main-content').find('.collapse-list'), 
      $container = $collapseList.find('.collapse').removeAttr('style'); 

     if ($container.filter('.in').length > 0) { 
      $container.removeClass('in'); 
     } else { 
      $container.addClass('in'); 
     } 
    }); 
    $(function() { 
     $('.collapse-all > a').click(); 
    }); 
</script> 
+1

开始jQuery的API中进行,有的类操纵方法的一套**与实施例** HTTP://api.jquery。 com/category/manipulation/class-attribute/ – charlietfl

+0

是的,我已经尝试过,但我找不到解决方案。不幸。 –

+1

那么这个网站的工作方式是你应该提供代码来显示你的尝试,以及一些html样本,而不仅仅是一个图像。显示在您的部分上的努力将产生有益的反应 – charlietfl

回答

1

这应做到:

$('.collapse-all').click(function(){ 
    $('.collapse').toggleClass('in'); 
}); 
+1

这并不可怕,但如果该类的某个元素独立切换到“切入”状态,它将不会与永远休息,这不是用户想要的。 – Malvolio

+0

我已经尝试过那样,但是一开始他给课堂上.collapse。如何删除(in)类,然后在用户在链接上存储时给予(in)类? –

+0

@Malvolio,那当然是对的。为了解决这个问题,我想你必须在collapse-all元素上存储状态(它是否应该使所有元素崩溃),在数据属性例如 – HaukurHaf

0

加入我自己的答案来解决反对我不得不HaukurHaf的,否则精解(这是可能的元素永久不同步):

$('.collapse-all').click(function(){ 
     var show = false; 
     return function() { 
      show = !show; 
      $('.collapse').toggleClass('in', show); 
     }; 
    }() 
}); 

这将建立一个附加到函数本身的作用域,并在该作用域中放置一个名为show的变量以保持元素的当前(预期)状态;

+0

在什么情况下可能发生? – Hitesh

+1

@hitesh - 你的意思是,他们怎么会失去同步?公司的另一部分有人写一个函数来打开或关闭某个特定的部分。 – Malvolio

+0

哦....嗯,明白了,我从来没有想过这么远,谢谢你的洞察力 – Hitesh

0

这可以很容易地与jQuery-Toggle

$(document).ready(function(){ 

     $('.collapse-all').on('click', function (e) { 
     $('.collapse').toggleClass('in'); 
     }); 

}) 

Fiddle

相关问题