Существуют модули, которые могут сделать это за вас, например, Nice Menus.
Подменю, вероятно, не является дочерним по отношению к родительскому меню в DOM. Это, наверное, что-то вроде этого:
<ul id="parent">
<li>menu item</li>
</ul>
<ul id="submenu">
<li>menu item</li>
</ul>
Таким образом, когда вы наводите курсор мыши на подменю, mouseLeave / mouseOut срабатывает на родительском элементе.
Вы можете решить это несколькими способами. Один из них состоит в том, чтобы реструктурировать ваш HTML таким образом, чтобы подменю было в родительском:
<ul id="parent">
<li>menu item
<ul id="submenu">
<li>menu item</li>
</ul>
</li>
</ul>
или для обнаружения / сохранения состояния обнаруженного элемента в JavaScript. Для этого одним из возможных способов является сохранение с использованием объекта данных jQuery или добавление класса (например, «on») в меню, над которым вы наведите курсор мыши, и использование селекторов дочерних / дочерних элементов, чтобы определить, находитесь ли вы в подменю. Если вы не находитесь в родительском или подменю, удалите класс «on».
Есть много способов сделать это, как в JavaScript / HTML / CSS, так и с помощью модулей Drupal. Покажите некоторый код, если вы все еще в замешательстве.