Вот держи, у тебя сверстано так, что ты жмешь крестик и по факту еще жмешь на родителя на которого ты делаешь открытие 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();
});