Search code examples
jqueryslidedownslideup

jQuery close slide when slideDown


I want to close previous slide, when a slide is down (is active). How can i do this? Thanks for helping.

//PARAMS
var codeicons = jQuery('.codeparams').attr('data-icons');
var codecoloreven = jQuery('.codeparams').attr('data-even');
var codecolorhover = jQuery('.codeparams').attr('data-color');
var codebordercolor = jQuery('.codeparams').attr('data-border');

//DOWN  
jQuery('.code-question').toggle(function(){
    jQuery(this).next().slideDown('fast');

    if(codeicons == 'dark') {
    jQuery(this).addClass('code-active').addClass('codedarkdell').css({'box-shadow' : codebordercolor + ' 0 0 4px 0 inset' , 'border-color' : codebordercolor});
} else {
    jQuery(this).addClass('codelightdell').css({'box-shadow' : codebordercolor + ' 0 0 4px 0 inset' , 'border-color' : codebordercolor});
    };
},

/UP
    function(){
    jQuery(this).next().slideUp('fast');
    jQuery(this).removeClass('codedarkdell').removeClass('codelightdell').css({'box-shadow': '', 'border-color': ''});
    });

Solution

  • Here is a simple script which can help you:

    $('.code-question').click(function(){
            //Close all which are open
            $('.code-answer').slideUp();
            // check if clicking on active one
            if ($(this).next().is(':visible')) { 
                //Close it if open
                $(this).next().slideUp('fast');     
            } else {
                //Open it if not
                $(this).next().slideDown('fast');       
            }
    
        });
    

    Your code have some more condition which you can include.