Все сводится к тому, что у вас есть переменная, которая будет хранить состояние вашего скольжения и предотвратит дальнейшие запросы, если скольжение уже происходит.
Установите флаг в начале скольжения и используйте обратный вызов, чтобы сбросить флаг.
var closing = false;
$('#menu > li').mouseleave(function(){
closing = true;
$(this).find('ul').slideUp(null, function(){
closing = false;
});
});
// then in the hover method you would just check the value of closing to see if to allow or not opening.
Вторая идея была раскрыта немного раньше Джеймсом Аллардисом, и мне больше нравится, если она работает.