2017-01-20 3 views
0

コンテンツを切り替えるのに役立つ - 少数の列で、ボタンのクリックで表示される隠れたコンテンツを作成しました。 (btn-showをクリックすると、テキストが表示されます)クリックしたコンテンツのみを表示するかどうかを切り替える - 他を隠す

<div class="wpb_wrapper"> 
<div class="bio"><a class="btn-show">Arnold Schwarzenegger,Chairman, CEO &amp; Partner</a></div> 
<p class="bio-text" style="display: none;">Arnold Alois Schwarzenegger (born July 30, 1947) is an Austrian-American actor, model, producer, director, activist, businessman, investor, writer, philanthropist, former professional bodybuilder, and politician. Schwarzenegger served two terms as the 38th Governor of California from 2003 until 2011.</p> 
</div> 

私はこのようなラッパーを4つ持っています。 jQueryによって実装されています。問題は、どのように現在行われている、それはアクティブになるすべてのトグルをサポートしています。私はここで (他の非表示に1をクリックした以外のすべての拡張されたコンテンツをクリックしてください)のみ1がアクティブであることを許可するように私のコードを再フォーマットする必要があるコードです:

jQuery(document).ready(function ($) { 
    $('.bio-text').hide(); 
    $('.btn-show').click(function() { 
     // $this determines which button clicked on 
     var $this = $(this); 
     // grab the text that is NEXT to the button that was clicked on 
     //var theText = $this.next(); 
     var theText = $this.parent().next(".bio-text"); 
     // Change the text of the button depending on if the text is hidden 
     theText.slideToggle(500); 
     $this.parent().toggleClass('highlight'); 
    }); 
}); 

だから、これが動作しているが、すべてのペインを開くことができるようになります同時に。 この排他的な1つのコンテンツペインが示すように、私は助けが必要です。事前

+1

完全なマークアップを追加してください。 – Ionut

+0

あなたはアコーディオンを作ろうとしています –

答えて

0

おかげで、ちょうどその正しいつのオープンをスライドさせ、最初のクリック機能内のすべてを非表示にします。

PS:申し訳ありませんが、私はJavaScriptのコードを少し短くしました。

jQuery(document).ready(function($){ 
 
    $('.bio-text').hide(); 
 
    $('.btn-show').on('click', function(e) { 
 
    $('.bio-text:visible').slideUp(500).parent().removeClass('highlight'); 
 
    $(this).next(':hidden').slideDown(500).parent().addClass('highlight'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="wpb_wrapper"> 
 
<a class="btn-show">Arnold Schwarzenegger,Chairman, CEO &amp; Partner</a> 
 
<p class="bio-text">Arnold Alois Schwarzenegger (born July 30, 1947) is an Austrian-American actor, model, producer, director, activist, businessman, investor, writer, philanthropist, former professional bodybuilder, and politician. Schwarzenegger served two terms as the 38th Governor of California from 2003 until 2011.</p> 
 
</div> 
 
<div class="wpb_wrapper"> 
 
<a class="btn-show">Someone else</a> 
 
<p class="bio-text">Texts</p> 
 
</div>

+0

私はそれがユーザーが持っている 'HTML'だとは思いません。コードから 'parent'要素を探すことができます。 – Ionut

+0

これは正しく動作していません。開始時のような初期状態をすべてのパネルに隠したいのですが?最初の展開を最初にクリックすると、前のパネルが折りたたまれておらず、パネル2のボタン2がクリックされていないことを想像してください。パネル2を表示するだけの機能が必要です。今より明確ですか? – Lanchushki

+0

@Lanchushki、いいえ、あなたは完全なコードを投稿する必要があります。だから、人々は混乱している。 HTML全体を投稿してください。 – Ionut

0

あなたは、このようなスクリプトを書くことができます:

jQuery(document).ready(function ($) { 
    $('.bio-text').hide(); 
    $('.btn-show').click(function() { 
    $('.bio-text').hide(); 
     $(this).next('p').slideToggle(); 
    }); 
}); 

例:https://jsfiddle.net/nkgLzaeq/

あなただけの1パネル用アクティブ保持したい場合は、削除する必要があります現在のパネルでアクティブなクラスをアクティブにして、すべてのパネルを非表示にします。

+0

私はそれがユーザーが持っている 'HTML'だとは思いません。コードから 'parent'要素を探すことができます。 – Ionut

+0

彼はHTMLの完全なマークアップを表示していないので、彼はアクティブな1パネルだけのスクリプトを書く方法を知りたいと思うと思います。 –

+0

@NguyễnHuy正確 – Lanchushki

関連する問題