jQuery隐藏和显示切换保持活动只有一个div

时间:2015-02-10 14:56:04

标签: jquery toggle hide show toggleclass

我是JQuery和Javascript的首发,我想知道如何编辑以下代码,以便当我点击标题时,其他标题下的内容将被隐藏?我也想让箭头正常运作。

基本上,我想在点击标题时只保留一个内容?

以下是我的代码:http://jsfiddle.net/mL79571z/1/

$(".prod_options").hide();
$(".stag_options").hide();
$(".qa_options").hide();

$("#show_prod_options").click(function(){
    $(".prod_options").slideToggle("slow");
    $("#arrow_prod").toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
});
$("#show_stag_options").click(function(){
    $(".stag_options").slideToggle("slow");
    $("#arrow_stag").toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
});
$("#show_qa_options").click(function(){
    $(".qa_options").slideToggle("slow");
    $("#arrow_qa").toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
});

谢谢!

3 个答案:

答案 0 :(得分:1)

http://jsfiddle.net/mL79571z/13/

HTML(对您需要的每个选项重复):

<div class="env_menu_options dropMenu" id="stag_env_menu_options">
    <div class="env_list" id="show_stag_options">
        <span id="arrow_stag" class="glyphicon glyphicon-chevron-down arrow"></span> Heading 2
    </div>
    <div class="stag_options detail">Content 2 <br>Content 2</div>
</div>

CSS:

.detail {
    display:none;   
}

JS:

$(".dropMenu").on("click", function () {
    var notThisOne = $(this);

    $(".dropMenu").each(function() {
        if ($(this).attr("id") !== notThisOne.attr("id")) {            
            $(this).find(".arrow").removeClass("glyphicon-chevron-up").addClass("glyphicon-chevron-down");
            $(this).find(".detail").slideUp("slow");
        } 
        else {
            $(this).find(".arrow").toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
            $(this).find(".detail").slideToggle("slow");                
        }        
    });    
});

答案 1 :(得分:0)

如果您只有几个部分,请使用.slideUp()和.slideDown()保持简单 - 请参阅更新的jsfiddle:

  $(".prod_options").hide();
    $(".stag_options").hide();
    $(".qa_options").hide();

    $("#show_prod_options").click(function(){
        $(".prod_options").slideDown("slow");
    $(".stag_options").slideUp();
    $(".qa_options").slideUp();

        $("#arrow_prod").toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
    });
    $("#show_stag_options").click(function(){
        $(".stag_options").slideDown("slow");
                    $(".prod_options").slideUp();
    $(".qa_options").slideUp();
        $("#arrow_stag").toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
    });
    $("#show_qa_options").click(function(){
        $(".qa_options").slideDown("slow");
                    $(".prod_options").slideUp();
    $(".stag_options").slideUp();
        $("#arrow_qa").toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
    });

https://jsfiddle.net/mL79571z/4/

答案 2 :(得分:0)

我已经实现了if条件,因此当我点击活动标题时,它只是简单地折叠所有内容。我已将条件添加到 Jeff Watkins 代码,它完美无缺。下面是条件,这里是完整的代码:http://jsfiddle.net/mL79571z/12/

$("#show_prod_options").click(function(){ 
if( $('#arrow_prod').hasClass('glyphicon-chevron-down') ){
   expand("#arrow_prod", ".prod_options");              
} else {
   collapse();
}

});

感谢您的帮助!