Я думаю, что некоторые из проблем связаны с изменением фокуса при выдвижении div, что приводит к вызову обработчиков при изменении фокуса, хотя я могу ошибаться в этом. Это может быть связано с тем, как jQuery обрабатывает кросс-браузерные события мыши (не все браузеры имеют одинаковые события, поэтому jQuery может их аппроксимировать). Я смог заставить его работать «в основном», применив обработчики событий мыши для обработки одного события и используя обратные вызовы, чтобы убедиться, что только один из них активен в любой момент времени, поэтому нет переключения между ними. Заметьте, я должен был указать явное направление / скорость для скрытия, или оно просто исчезло. Не уверен, почему, хотя это может быть связано с тем, как настроен мой пример, и div просто исчезает, как только левый край элементов списка покидает страницу.
$(function() {
$('#navlist').hide();
$('#navtitle').one('mouseenter', showOnEnter);
});
function showOnEnter() {
$('#navlist').show('slide', function() {
$('#nav').one('mouseleave', function() {
$('#navlist').hide('slide', { direction: 'left' }, 1000, function() {
$('#navtitle').one('mouseenter',showOnEnter);
});
});
});
}