2016-11-17 5 views
1

あまりにも多くのdivで表示したり非表示にするにはslideToggle()を使用する必要があります。jQueryがたくさんのトグルを管理します

これは私のコードですが、それは正しく動作しません:

$(".account-update").hide(); 
$(".account-update-pwd").hide(); 

$(".slide-toggle").click(function() { 
    $(".account-update").slideToggle(); 
    $(".account").slideToggle(); 
}); 
$(".slide-toggle-pwd").click(function() { 
    $(".account-update-pwd").slideToggle(); 
    $(".account-update").slideToggle(); 
}); 

HTML

<a href="#" class="slide-toggle">Update Account</a> 
<a href="#" class="slide-toggle-pwd">Change Password</a> 
+0

もう少しHTMLとJSを追加していただけますか? – Samir

+0

これは私にとってうまくいきます。 https://plnkr.co/edit/oc0kdwVuAg26TT4fZaie?p=preview –

+0

Offir Pe'er、正しく動作しません: –

答えて

0

を、私は以下の素敵な汎用的なソリューションを使用してcodeを更新しました。あなたはトグルボタンのためのユニークなクラスを作成することができる場合

$(".account-update").hide(); 
 
$(".account-update-pwd").hide(); 
 

 
$("a.slide-toggle").click(function() { 
 
    var targetDiv = $($(this).attr('data-selector')); 
 
    var otherDivs = $("div.slide-toggle").not(targetDiv); 
 
    
 
    otherDivs.each(function(){ 
 
    if($(this).is(':visible')) { 
 
     $(this).slideToggle(); 
 
    } 
 
    }); 
 
    
 
    targetDiv.slideToggle(function(){ 
 
    if($("div.slide-toggle:visible").length === 0) { 
 
     $(targetDiv.attr('data-default')).slideToggle(); 
 
    } 
 
    }); 
 
});
div { 
 
    height: 100px; 
 
} 
 

 
.account { 
 
    background-color: red; 
 
    color: white; 
 
} 
 

 
.account-update { 
 
    background-color: green; 
 
    color: white; 
 
} 
 

 
.account-update-pwd { 
 
    background-color: blue; 
 
    color: white; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="slide-toggle account">Account Div</div> 
 
<p><a href="#" class="slide-toggle" data-selector=".account-update">Update Account</a></p> 
 
<div class="slide-toggle account-update" data-default=".account">Account Update Div</div> 
 
<p><a href="#" class="slide-toggle" data-selector=".account-update-pwd">Change Password</a></p> 
 
<div class="slide-toggle account-update-pwd" data-default=".account">Account Password Update Div</div>

+0

「アカウント」はデフォルトのdivです「アカウントの更新」と「パスワードの変更」は「アカウントdiv。 –

+0

@Flex_able」を切り替えますこの「アカウント」divを切り替えたいのですかあなたのコードをチェックして、 – Aruna

+0

"account"は私がアカウントのデータを置くデフォルトのdivです。アカウントを表示すると "アカウントの変更とパスワードの変更"が表示されなくなります。アカウントを更新してアカウントを表示し、pwd hideを変更すると3 DIV。 –

0

、あなたはこのような何かを行うことができます。

$('body').on('click', 'a,button', function(e){ 
 
    if ($(e.target).attr('class') === 'btn-toggle') { 
 
    $(this).css({ 
 
     color: 'red' 
 
    }) 
 
    } 
 
});
 
 
\t <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
 
    <a href="#" class="btn-toggle">aaaa</a> 
 
\t <a href="#" class="btn">aaaa</a> 
 
\t <a href="#" class="btn">aaaa</a>

ショートとシンプルな:)

+0

はい、うまくいきません。 –

+0

私の例は魅力のように機能します。好みに合わせてカスタマイズしてください。 –

0

これを試してみてください。それは何

<a class="button toggle-trigger" data-entity="container-one">Container One Link</a> 
<a class="button toggle-trigger" data-entity="container-two">Container Two Link</a> 

<div class="container toggle-target" data-entity="container-one">Container One</div> 
<div class="container toggle-target" data-entity="container-two">Container Two</div> 

を使用する方法

$(".toggle-trigger").on("click", function() { 

    var trigger = $(this); 
    var target = trigger.attr("data-entity"); 

    if (!trigger.hasClass("active")) { 

     $(".toggle-trigger").removeClass("active"); 
     trigger.addClass("active"); 
    } else { 

     $(".toggle-trigger").removeClass("active"); 
     trigger.removeClass("active"); 
    } 

    $(".toggle-target[data-entity='"+ target +"']").toggleClass("hide"); 
}); 

あなたがtoggle-triggerをクリックしたときに、コンテナをトリガするリンクである、です。 data-entityという属性を取得します。この属性は、コンテナのdata-entityが項目を切り替えるためのユニークなパラメータです。

関連する問題