Sergio González
Sergio González

Reputation: 142

Jquery slideUp not triggering

Hey guys I'm trying to create a view with an accordion using this HTML:

<ul class="left_menu_list">
  <li class="left_menu_item active" data-item="firma">
    <div>LA FIRMA</div>
    <ul class="firma_list secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA firma_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
  <li class="left_menu_item" data-item="areas">
    <div>ÁREAS E INDUSTRIAS</div>
    <ul class="areas_list hidden secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA areas_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
  <li class="left_menu_item" data-item="oficinas">
    <div>OFICINAS</div>
    <ul class="oficinas_list hidden secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA oficinas_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
  <li class="left_menu_item" data-item="equipo">
    <div>EQUIPO</div>
    <ul class="equipo_list hidden secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA equipo_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
  <li class="left_menu_item" data-item="compromiso">
    <div>COMPROMISO</div>
    <ul class="compromiso_list hidden secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA compromiso_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
  <li class="left_menu_item" data-item="comunicacion">
    <div>COMUNICACIÓN</div>
    <ul class="comunicacion_list hidden secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA comunicacion_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
  <li class="left_menu_item" data-item="empleo">
    <div>EMPLEO</div>
    <ul class="empleo_list hidden secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA empleo_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
  <li class="left_menu_item" data-item="alumni">
    <div>ALUMNI</div>
    <ul class="alumni_list hidden secondary_list">
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA empleo_list</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
      <li class="secondary_list_item">LA FIRMA</li>
    </ul>
  </li>
</ul>

With this css:

.left_menu_list{
        .left_menu_item{
          .secondary_list{
            display: none;
            position: relative;
            background: @white;
            margin-top: 0;
            left: -4.42vw;
            width: 100%;
            top: 0;
            padding-left: 4.42vw;
            .secondary_list_item{
              margin-left: 20px;
            }
          }
}

I've create some JS code, trying to create the effect:

$('.left_menu_item').click(function(){
   if(false == $(this).children('ul').is(':visible')) {
        $(this).children('ul').slideUp(300);
    }
    $(this).children('ul').slideToggle();
});

The main problem is that slideDown() effect works perfectly but, the slideUp() one does not works. It makes the slide down, but when I click on another item, the slideUp does not trigger, it just get hiden with no effect.

Does anyone know why? Thanks.

Upvotes: 1

Views: 75

Answers (2)

Death-is-the-real-truth
Death-is-the-real-truth

Reputation: 72269

Do it like below (only 3 line of code):-

$('.left_menu_item').click(function(){
  $(this).children('ul').slideToggle();
  $('.left_menu_item').not(this).children('ul').slideUp();
});

Note:- CSS shown by you is wrong. Change it accordingly as i do in my answer

Also you can provide some time-span in both like slideToggle(500) and slideUp(500) to make it bit smother.

Working example with your code:-

https://jsfiddle.net/b8ww8q8L

Upvotes: 1

Asifuzzaman
Asifuzzaman

Reputation: 1783

hello use the below code

$(".left_menu_list > li > div").click(function(){
if(false == $(this).next().is(':visible')) {
    $('.left_menu_list ul').slideUp(300);
}
$(this).next().slideToggle(300);
});
$('.left_menu_list ul:eq(0)').show();

see the below fiddle

fiddle demo

Upvotes: 0

Related Questions