2014-07-15 83 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

相關問題