лучше бы выложить html код чтобы не гадать
1) вместо .parent() надо бы использовать
.closest() это даст доступ к нужному родителю (два, три, десять уровней выше) а .parent() ищет только на ступень выше.
А также закрытие на меню при клике на body
2) Это уже не такая тривиальная задача как казалось бы, как такового нажатия на body не происходить тк каждый блок это "слой" над боди.
можно попробовать это решение