А если так?
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<ul class="wrap middleMenu">
<li class="menu__list first"><a>Каталог</a>
<ul class="middleMenu__drop" style="display: none;">
<li><a href="#">Туфли</a></li>
<li><a href="#">Босоножки</a></li>
<li><a href="#">Кеды</a></li>
<li><a href="#">Кросcовки</a></li>
<li><a href="#">Ботинки демисезон</a></li>
<li><a href="#">Сапоги демисезон</a></li>
</ul>
</li>
<li><a href="#">ОПЛАТА / ДОСТАВКА</a></li>
<li><a href="#">ОТЗЫВЫ О МАГАЗИНЕ</a></li>
<li class="last"><a href="#">НОВИНКИ</a></li>
</ul>
<script>
$('.menu__list').on('mouseleave mouseenter click', function (e) {
console.log(e);
if( e.relatedTarget === null && e.type !== 'click' ) return;
switch( e.handleObj.origType ) {
case 'mouseleave': $(this).find('.middleMenu__drop').slideUp(100); break;
case 'mouseenter': $(this).find('.middleMenu__drop').slideDown(100); break;
case 'click': $('.middleMenu__drop').slideToggle(100); break;
}
});
</script>
P.S. вариант
j0hnik работает лучше.