2013-02-27 25 views
8

開くための「アクティブ」クラスの追加:私は、このソリューション試してみましたブートストラップアコーディオン項目

Twitter bootstrap: adding a class to the open accordion title

しかし無駄にし、誰かが私が間違ってやっているものを私に伝えることができますか?

これはアコーディオンです:

<div class="accordion" id="accordion"> 
    <div class="accordion-group"> 
     <div class="accordion-heading"> 
      <div class="row-fluid"> 
       <div class="span5"> 
        <img src="img/smartlist/user-icon.png" class="user"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" 
        href="#collapseOne">Austin Wang</a> 

       </div> 
       <div class="span7"> 
        <img class="envelope" src="img/smartlist/envelope.png"> <a href="#">Seller Drip</a> 

        <img class="new" src="img/smartlist/new-icon.png"> <a href="#">New</a> 

        <img class="messages" src="img/smartlist/bubbles.png"> <a href="#">8 Days</a> 

        <img class="accordion-action pull-right" src="img/smartlist/plus-box.png" 
        data-toggle="collapse" data-target="#collapseOne"> 
       </div> 
      </div> 
     </div> 
     <div id="collapseOne" class="accordion-body collapse"> 
      <div class="accordion-inner"> 
       <div class="row-fluid"> 
        <div class="span12 top-links"> <a href="#" class="active">Email Template</a> 
<a href="#">Home Price Evaluation Offer</a> 

        </div> 
       </div> 
       <div class="arrow-up"></div> 
       <div class="row-fluid grey-body"> 
        <div class="span12"> 
         <label>Subject</label> 
         <input type="text" class="text-field"> 
         <label>Body</label> 
         <textarea rows="10"></textarea> 
         <div class="buttons"> 
          <div class="form"> 
           <button type="submit" class="send-button">Send</button> <a href="#" class="call">Call</a> 
<a href="#" class="skip">Skip</a> 

          </div> 
          <div class="pull-right radio"> 
           <input type="radio"> 
           <label>BCC Me</label> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 

そして一番下に私のJS:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="js/less-1.3.3.min.js" type="text/javascript"></script> 
<script src="js/bootstrap.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(".collapse").collapse() 
</script> 
<script type="text/javascript"> 
$(function() { 

$('.accordion-body').on('show', function (e) { 
    $(e.target).prev('.accordion-heading').find('.accordion-toggle').addClass('active'); 
}); 

$('.accordion-body').on('hide', function (e) { 
    $(this).find('.accordion-toggle').not($(e.target)).removeClass('active'); 
}); 

}); 
</script> 

私は本当に多くのJSを知らないので、任意の助けを歓迎です!

+0

は、一般的なアコーディオンのコントロールはデフォルトでアクティブクラスを追加し、削除しませんか? –

+0

あなたはどのブートストラップバージョンを使用していますか? – Bhuwan

答えて

0

あなたがそのフィドルに表示された場合、彼はあなたのケースで

.active { 
    background-color: Blue; 
} 

のための1つのCSSルールを定義している、あなたは成功した要素にCSSクラスを適用しているが、クラスが定義されていません。

+0

インスペクタのコードを見ると、アクティブなクラスは決して適用されないので、どのCSSを割り当てるかは関係ありません。 – imcconnell

+0

私はあなたが投稿したコードと、クラスが正しく割り当てられていることを試しました。あなたが 'console.log($(e.target).prev( '。accordion-heading')。find( '。accordion-toggle'))'を実行して、 –

+0

[こちら](http://jsfiddle.net/8CcuK/)を参照して、インスペクタをチェックインし、アクティブなクラスが適切に適用されていること。私はちょうど1つの '.active'ルール[here](http://jsfiddle.net/8CcuK/1/)と背景色を追加しました。 –

0

を(またはあなたが質問でそれを投稿していない)これは私の作品:

$('.accordion-body').on('show', 
    function(e){ 
    $(e.currentTarget).parent().find('.accordion-heading').addClass('active') 
    } 
) 

$('.accordion-body').on('hide', 
    function(e){ 
    $(e.currentTarget).parent().find('.accordion-heading').removeClass('active') 
    } 
) 
+0

こんにちは - これは私のためには機能しません - それは私がコードに置いている場所と関係がありますか? – imcconnell

+0

このコードは、DOMElementsの準備ができたら実行しなければなりません。それ以外の場合、$( '。accordion-body')は何も見つからず、何も起こりません。 [domが準備完了のときに実行する](http://api.jquery.com/ready/)このページの例を参照してください。 – Andreyy

関連する問題