Задачка на сообразительность. Кто сможет решить?
у вас где-то еще что-то пересекается, при клике срабатывает и хайд и шоу(в итоге оно снова шоу), как простой выход - сделайте  .hide( "slow"), более правильно - отловить что там у вас лишнее на что наезжает из элементов.
UPD: $('.stock-item') пересекается с $('.catalog-close')
Вот держи,  у тебя сверстано так, что ты жмешь крестик и по факту еще жмешь на родителя на которого ты делаешь открытие 2 уровня по этому у тебя сразу 2 события срабатывает, еще при close нужно скрывать 2 уровня в твоем коде он скрывает только 2 а 3 не скрывает. $(this).parents('.catalog-panel').hide(); думаю с этим понятно будет) просто .fist убрать$('.catalog-close').click(function(event){
      event.stopPropagation();
      $(this).parents('.catalog-panel.first').hide();
    });
    $('.back').click(function(event){
       event.stopPropagation();
      $(this).closest('.catalog-panel').hide();
    });