Добавляем делегированный обработчик клика, где делаем следующие проверки:
1. Если клик был за пределами какого-либо выпадающего меню - закрываем их все
2. Если клик был по кнопке открытия - открываем соответствующее ей меню
const cardSelector = '.post';
const buttonSelector = '.post > img';
const menuSelector = '.post-info';
const activeClass = 'active';
document.addEventListener('click', function(e) {
if (!e.target.closest(menuSelector)) {
document.querySelectorAll(menuSelector).forEach(n => n.classList.remove(activeClass));
}
if (e.target.matches(buttonSelector)) {
e.target.closest(cardSelector).querySelector(menuSelector).classList.add(activeClass);
}
});