2017-08-23 13 views
0

絶対配置されたアコーディオンの高さに基づいて、jqueryを使用してクリック時の親divの高さを拡大しています。この場合、絶対に配置する必要があります。クローズ時にアコーディオン開状態の高さを取得

各アコーディオンボタンは独自の機能を持ち、親の高さはアコーディオンタイトル(ボタン)+コンテンツになり、アコーディオンのどのセクションが開いているかによって変わります。問題は開いた状態で、デフォルトは、文書の負荷状態を閉じたとしてときに動的に正しい高さを得るために、私はコンテンツのサイズを知っておく必要があるということです

height:0;

$('.button').click(function(){ 

var accordionHeight = $('.accordion-content').height(); //default closed state, height:0; 

$('.parent').height(accordionHeight + $('.accordion-title').height()); 

}); 

は、どのような方法がありますされますオープン状態をデフォルトとして設定せずに、オープン状態でのアコーディオンコンテンツの高さを判断するにはどうすればよいですか?

詳細が必要な場合はお知らせください。

編集:その他の情報

2人の子供を持つ親のdivを想像してみてください。アコーディオンは1人の子供であり、もう1人は常にすべての州のアコーデオン部門と同じ高さになります。

Edit2:@ LouysPatriceBessetteのソリューションのバリエーションに基づいて解決されました。

//expand accordion 
    $(".custom-accordion .panel-collapse").addClass("in"); 
//get height 
    var accordionContent = $('.custom-accordion').height(); 
//display height 
    console.log(accordionContent); 
//collapse accordion 
    $(".custom-accordion .panel-collapse").removeClass("in"); 
//check we still have the correct height value 
    console.log(accordionContent , "Hello, world!"); 

    $('.custom-accordion .title').click(function(){ 
     $('.sibling').height(accordionContent); 
    }); 
+1

こんにちは、開かれた状態になっているときは.accordion-contentに高さを追加するだけです。各ボタンをクリックするとどうなりますか? – bellabelle

+0

@bellabelleはいそうです。 – JPB

答えて

1

これはかなり理論的なことです。マークアップと文脈全体がないと。

しかし、ロード時にアコーディオンを開いて、後で使用するために必要な高さを取得するのに必要な時間を設定することをお勧めします。

次に、ユーザーがクリックするまでアコーディオンを閉じます。

これらの測定の間、不透明度をゼロに設定することができます。開いたアコーディオンが数ミリ秒表示され、これが醜い場合は、

だから、ステップバイステップ:

  1. は全開アコーディオンでページをロードします。不透明度= 0;
  2. すべての測定値を取ります。
  3. アコーディオンを閉じます。
  4. あなたはそれが「最新デザイン」によって意図的に見えるようにフェードイン()を使用することができ... 1への不透明度を復元し、私の作業jsFiddleを試してみてください)
+0

これは間違いなく私が使用できる解決策です。不透明度を設定すると何も見ることができません:閉じた状態では1でしょうか? – JPB

+0

私は最後の質問をしません...しかし、私はアコーデオンコンテナの不透明度で遊ぶでしょう、測定中にそれを見えないようにする...それが開かれている間、それはしないでください。それは数ミリ秒です。 –

+1

不透明度を必要とせずにこのアイデアに基づいて解決しました。元の質問にコードを追加しました。ありがとうございます。 – JPB

1

を。

これはあなたが必要とするものです。 :)これがあなたを助けることを願っています。

ボタンがclickedの場合、それぞれのコンテンツが表示されます。

+0

ありがとうございますが、これは正しくはありません。子供を持つ親を想像してみてください。アコーディオンは子供の一人で、他の子供は常にすべての州のアコーデオンと同じ高さになるでしょう。 – JPB

関連する問題